知识点总结

1、下面两种方式都是弱引用代理对象,但是第一种在代理对象被释放后不会导致崩溃,而第二种会导致崩溃。

(1)@property (nonatomic, weak) iddelegate;

(2)@property (nonatomic, assign) iddelegate;

weak和assign是一种“非拥有关系”的指针,通过这两种修饰符修饰的指针变量,都不会改变被引用对象的引用计数。但是在一个对象被释放后,weak会自动将指针指向nil,而assign则不会。在iOS中,向nil发送消息时不会导致崩溃的,所以assign就会导致野指针的错误unrecognized selector sent to instance。所以我们如果修饰代理属性,还是用weak修饰吧,比较安全。

2、深拷贝&浅拷贝

示例代码:


NSString *string= @"牛大发了";

// 没有产生新对象

NSString *copyString = [stringcopy];

// 产生新对象

NSMutableString *mutableCopyString = [stringmutableCopy];

NSLog(@"string = %p copyString = %p mutableCopyString = %p",string, copyString, mutableCopyString);


NSMutableString*string = [NSMutableStringstringWithString:@"牛大发了"];

// 产生新对象

NSString*copyString = [stringcopy];

// 产生新对象

NSMutableString*mutableCopyString = [string mutableCopy];

NSLog(@"string = %p copyString = %p mutableCopyString = %p", string, copyString, mutableCopyString);


根据打印出来的对象地址可以得出结论:

源对象类型若为NSString,使用copy方法为浅拷贝(不产生新对象),mutableCopy方法为深拷贝(产生了新对象)。

其他对象NSArray、NSMutableArray 、NSDictionary、NSMutableDictionary一样适用。


3、iOS9 以后设置状态栏颜色无效解决方法

在使用一般方法时,在IOS9以后,没有效果

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

这时需要在info.Plist文件里添加下面的参数才可以正常显示

View controller-based status bar appearance 设置成No,默认为Yes


4、[!] Unable to add a source with url `https://github.com/CocoaPods/Specs.git` named `master`.

You can try adding it manually in `~/.cocoapods/repos` or via `pod repo add`.

原因是装了多个Xcode导致路径变了的缘故

解决:在终端中cd到要添加podfile的工程,选择要使用的Xcode的路径

zhangxindeMacBook-Pro:MobileCooperativeOffice zhangxin$ sudo xcode-select -switch/Applications/Xcode\ 8.2.1.app

zhangxindeMacBook-Pro:MobileCooperativeOffice zhangxin$ pod update --no-repo-update

zhangxindeMacBook-Pro:MobileCooperativeOffice zhangxin$ pod install --verbose --no-repo-update

5、遍历UItableviewcell的子view,比如一个button

UITableViewCell *currentCell = [_dataListTableView cellForRowAtIndexPath:indexPath];

for (UIView *btn in currentCell.contentView.subviews) {

      if ([btn isKindOfClass:[UIButton class]]) {

             [self btnInCellTapped:(UIButton *)btn];

      }

}

你可能感兴趣的:(知识点总结)