iOS开发技巧。
来源:互联网 发布:linux cp命令 覆盖 编辑:程序博客网 时间:2024/05/29 03:45
1,工程中创建一个Base控制器,其他控制器继承Base,在Base控制器里面注册一个通知,这样可以在子控制器发送通知,可以实现在任意界面接受消息。应用范围:断网通知,断开蓝牙,断开WiFi等。
2,分类是不能添加属性和成员变量的,但是可以通过其他方法实现。
声明:
#import <CoreBluetooth/CoreBluetooth.h>#import <UIKit/UIKit.h>@interface CBPeripheral (YFlalal)@property (nonatomic, copy) NSString *animation;@property (nonatomic, copy) NSString *mac;@property (nonatomic, copy) NSString *name;@property (nonatomic, strong) NSString *Photo;@property (nonatomic, strong) NSString *userid;@property (nonatomic, copy) NSString *isLost;@property (nonatomic, copy) NSString *isBlind;@property (nonatomic, copy) NSString *uid;@property (nonatomic, strong) UIImage *iconImage;@property (nonatomic, copy) NSString *connected;@end
实现:
#import "CBPeripheral+YFlalal.h"#import <objc/runtime.h>static void * MyObjectMyCustomPorpertyKey = (void *)@"MyObjectMyCustomPorpertyKey";static void * MyObjectMyCustomPorpertyMacKey = (void *)@"MyObjectMyCustomPorpertyMacKey";static void * MyObjectMyCustomPorpertyNameKey = (void *)@"MyObjectMyCustomPorpertyNameKey";static void * MyObjectMyCustomPorpertyPhotoKey = (void *)@"MyObjectMyCustomPorpertyPhotoKey";static void * MyObjectMyCustomPorpertyUseridKey = (void *)@"MyObjectMyCustomPorpertyUseridKey";static void * MyObjectMyCustomPorpertyUidKey = (void *)@"MyObjectMyCustomPorpertyUidKey";static void * MyObjectMyCustomPorpertIconImageKey = (void *)@"MyObjectMyCustomPorpertIconImageKey";static void * MyObjectMyCustomPorpertIsLostKey = (void *)@"MyObjectMyCustomPorpertIsLostKey";static void * MyObjectMyCustomPorpertIsBlindKey = (void *)@"MyObjectMyCustomPorpertIsBlindKey";static void * MyObjectMyCustomPorpertIsConnectedKey = (void *)@"MyObjectMyCustomPorpertIsConnectedKey";@implementation CBPeripheral (YFlalal)-(void)setConnected:(NSString *)connected{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertIsConnectedKey, connected, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)connected{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertIsConnectedKey);}-(void)setIsBlind:(NSString *)isBlind{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertIsBlindKey, isBlind, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)isBlind{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertIsBlindKey);}-(void)setIsLost:(NSString *)isLost{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertIsLostKey, isLost, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)isLost{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertIsLostKey);}-(UIImage *)iconImage{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertIconImageKey);}-(void)setIconImage:(UIImage *)iconImage{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertIconImageKey, iconImage, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(void)setUid:(NSString *)uid{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertyUidKey, uid, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)uid{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyUidKey);}-(void)setUserid:(NSString *)userid{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertyUseridKey, userid, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)userid{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyUseridKey); }-(void)setPhoto:(NSString *)Photo{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertyPhotoKey, Photo, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)Photo{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyPhotoKey);}-(void)setAnimation:(NSString *)animation{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertyKey, animation, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)animation{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyKey);}-(void)setMac:(NSString *)mac{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertyMacKey, mac, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)mac{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyMacKey);}-(void)setName:(NSString *)name{ objc_setAssociatedObject(self, MyObjectMyCustomPorpertyNameKey, name, OBJC_ASSOCIATION_RETAIN_NONATOMIC);}-(NSString *)name{ return objc_getAssociatedObject(self, MyObjectMyCustomPorpertyNameKey);}@end这里引用例如OC的runtime机制,通过objc_setAssociatedObject关联上一个属性。
3,block可以正向传值,也可以反向传值。
4,通知实现正向传递消息:众所周知通知要先注册才能收到消息,如果我要在一级界面发消息,二级界面响应怎门办。
这要重写二级界面的init方法。在init方法里面注册通知。
- (instancetype)init{ self = [super init]; if (self) { [self registNotification]; } return self;}-(void)registNotification{ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setLocation) name:@"locating" object:nil];}一级界面发送通知在初始化二级界面后,跳转前。
YFMapViewController *mapView = [[YFMapViewController alloc] init]; [[NSNotificationCenter defaultCenter] postNotificationName:@"locating" object:nil]; [self.navigationController pushViewController:mapView animated:YES];
4,持续更新中。。。
阅读全文
1 0
- iOS开发技巧积累
- iOS 开发技巧1
- iOS 开发技巧2
- iOS开发技巧3
- iOS开发技巧4
- iOS开发技巧7
- iOS开发技巧8
- iOS开发技巧9
- iOS开发技巧10
- iOS开发技巧
- iOS开发技巧
- iOS开发技巧12
- iOS开发技巧14
- iOS开发技巧17
- iOS开发 小技巧
- ios开发技巧
- IOS开发技巧
- iOS 开发小技巧
- 如何解决同一URL 地址,服务器图片更变了,客户端怎么判断是否需要更变
- 微信小程序快递鸟查物流
- Node.js的回调函数以及事件循环
- mybatis 智能标签+多条件查询
- Mysql多列加自定义排序
- iOS开发技巧。
- 关于工作激情与项目管理的思考
- Linux下配置JDK、Tomecat
- 【扩展】Freemarker模板遍历集合实现下载word部分文字隐藏
- hdu1176—免费馅饼(dp)
- java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)
- POJ. 2253 Frogger (Dijkstra )
- jquery获取span标签下的第一个span子标签内容
- EL表达式与jQuery的$()