编写代码需要注意的地方

1、使用delegate中的方法时,要检测实现delegate的类是否有实现delegate。
//respondsToSelector:检测
 if([self.myCallbackDelegate respondsToSelector:@selector(delegateCallback:)]){
            [self.myCallbackDelegate delegateCallback:key];
        }
2、如果有多个地方需要用到安全检测,希望能够将此段安全检测的代码写入宏定义或者封装到工具类中。
-(void) safeSetObject:(id)anObject forKey:(id)aKey {
 if (anObject && aKey) {
  [self setObject:anObject forKey:aKey];
 } else {
  NSAssert2(NO, @"NSMutableDictionary invalid args safeSetObject:[%@] forKey[%@]", anObject, aKey);
 }
}
3、如果在多线程的环境中操作可变容器,需要使用@synchronized() {}保证线程安全,并且需要安全检测。
@interface XGSDKres(){
    NSMutableDictionary* _finishtasks;
}
 @synchronized(self.finishtasks) {
}
4、使用代理定义对象时,记得属性用weak
//使用weak为了避免引用循环
@property(nonatomic, weak)id<DownFinishCallback> myCallbackDelegate;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容