ios 知识小积累

来源:互联网 发布:ff14拉拉菲尔捏脸数据 编辑:程序博客网 时间:2024/05/17 07:39
1、在使用xcode5的时候由于之前一直用了boost出现了一个问题

recursive template instantiation exceeded maximum depth of 128

解决如下:http://trac.macports.org/ticket/40634

2、boost安装问题
  • 首先编译Boost.Build
        修改sh的文件属性
         
 chmod +x bootstrap.sh
 chmod +x ./tools/build/v2/engine/build.sh
 
执行 bootstrap.sh
./bootstrap.sh

生成b2可执行程序

  • 编译Boost库
    //用Clang编译boost file sytem
    ./b2 toolset=clang cxxflags="-arch x86_64" linkflags="-arch x86_64" --with-filesystem      

    The Boost C++ Libraries were successfully built!
    The following directory should be added to compiler include paths:
        /Users/liwei/DEV/Project/boost_1_50_0
    The following directory should be added to linker library paths:
        /Users/liwei/DEV/Project/boost_1_50_0/stage/lib


    最后生成的文件保存在./stage/lib目录

     
    默认编译出来的是Release版本,编译debug版本:
    ./b2 toolset=clang cxxflags="-arch x86_64" linkflags="-arch x86_64" --with-filesystem variant=debug --stagedir=./stage/x64/debug

3、ios7 UI适配

过几天等空了,要把IOS7的更新的特性好好看一下 http://www.cocoachina.com/newbie/basic/,记录一下。

总结一下不一定是最好的方法,纯粹是省时间的方法,不至于在ios7的设备上看上去错位,想要充分符合ios7的风格,还是要在设计上做出一定的改变的):

(1)如果应用程序始终隐藏 status bar 那么恭喜呢,你在UI上需要的改动很少很少。

(2)如果应用程序显示status bar,可以讲status bar设置成黑色不透明 ,然后在UIViewController 中加入下面的判断,

[cpp] view plaincopy
  1. #define IOS7_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )  
  2.   
  3. #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  
  4.         if ( IOS7_OR_LATER )  
  5.         {  
  6.             self.edgesForExtendedLayout = UIRectEdgeNone;  
  7.             self.extendedLayoutIncludesOpaqueBars = NO;  
  8.             self.modalPresentationCapturesStatusBarAppearance = NO;  
  9.         }  
  10. #endif  // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000  

(3)如果勾选了Hide during application lauch 的话,在IOS7 的设备上,是没有问题的,

   启动完以后status bar 会重新出现的,但是在IOS7 一下的设备,需要在launch didfinish 里面把status bar 显示出来。


(4)可以通过设置view的背景颜色来改变 status bar 的颜色来搭配你的nav 条。

   (5)  有些地方肯能要对版本进行判断,分别做不同的处理。

   (6)  可以用旧版的sdk来编译,这样在真机上还是和原来一样的效果。具体的方法可以参考:http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/


4、AdSupport.framework无法正常使用的问题添加的问题

dyld:Library not loaded:/System/Library/Frameworks/AdSupport.framework/AdSupportReferenced from:/var/mobile/Applications/8E09C9AA-CA81-4C26-AEED-B2C632B60A54/Gridlocked.app/GridlockedReason: image not found

这个bug主要是添加了 AdSupport.framework, 添加 Accounts.framework 和 Social.framework 的时候也会出现类似的错误,当然在6.0的simulator/device下是不会的。

解决就是

Project-> Targets-> Build Phases-> Link Binary with Libraries

把后面的 Required 改成 Optional 即可



4、itunes 老是提醒本电脑未授权

由于itunes修改了规则,每次用itunes更新软件时老是提示本电脑未授权,但是已经授权过,为什么还是不能同步?这个问题折腾了我几个月,最后才发现,itunes无法同步多个帐号的程序。

现在终于搞懂了。

先点击菜单栏,在文件》设备 下面你的设备(iPhone、iPad、Touch),传输购买项目,然后看iTunes 的提示,会告诉你哪些应用不属于你的Apple ID,它们就是造成无法同步安装新应用的原因。进入你的设备,删除这些应用,之后你用自己ID下载的应用程序就能同步安装到设备了。

有很多人遇到要删除很多程序,不好意思我删除了N多个,只保留了自己ID下载的程序,然后就可以同步了。


5、Xcode5安装Command Line Tools

之前系统升级到 Mac OS X 10.9 Mavericks ,顺带的连xcode也一起升级了。

升级后我还没发现啥问题,后面因为需要用到重新编译php,就发现问题了。

各种原本能正常运行的命令,现在都出现问题

之前我还以为是编译参数问题,但是经过一系列操作后就排除了参数可能出现的错误

实在无奈的我装了一个brow后提示

1
2
3
Warning: Your Xcode (5.0) is outdated
PleaseinstallXcode 5.0.1.
Error: No available formula forbzip2-devel

好吧,想重装一下Command Line Tools,居然在以前的那个地方找不到了。。。

最后查询苹果开发者网站后得出答案了,原来新的Command Line Tools跟Java一样变成了在线可选安装包,直接图形化安装就可以了。

运行命令

1
sudoxcode-select--install

就会显示一行文字,并且弹出一个对话框,确认安装后他就会自己下载来安装了。

至此,Command Line Tools就能够重新复活了~~~



6、传参引用的问题

-(void)test:(NSString**)aaa {

    *aaa = [*aaa stringByAppendingString:@"aaaaaaaaaaa"];

}

- (void)clickedBtn:(id)sender{

    NSString* errmsg = @"asdfadfa";

    [self test:&errmsg];

需要传引用才可以把修改的返回回来

0 0
原创粉丝点击