iOS之传值

在iOS中传值的方式有很多种方式,有最普遍的就是属性传值,代理传值,block传值等方式了。
写了OCswift的两个版本的传值demo。

其中需要说明一下的是,这个通知传值。
在通知传值的时候,有的时候会出现如下的问题,也就是当通知中心发出了通知,接收通知的一方却没有收到任何消息。这可能是线程阻塞的原因,只需要将通知中心放在子线程中去处理。

// OC
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:self userInfo:@{@"text" : @"请输入账号名"}];
}];
// swift
OperationQueue.main.addOperation {
    let cell = self.tableView.cellForRow(at: IndexPath(row: 4, section: 0))
    let wjNotificationName = Notification.Name.init(rawValue: "notificationTest")
    NotificationCenter.default.post(name: wjNotificationName, object: self, userInfo: ["text" : cell?.textLabel?.text ?? "没有值传入"])
}

单例传值:
在OC和swift中创建单例传值,一般都会创建一个单例类,通过这个单例类来中转,进行传值,也就是说这个单例类就像是个容器一样进行存储数据,也就是说正向反向传值都可以。
但是在OC中和swift中创建单例类还是有些不同:

// OC采用的是GCD或者是其他的方法进行创建
+ (wjSingleTon *)shareSingleTon {
    static wjSingleTon *singleTon = nil;
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        singleTon = [[self alloc] init];
    });
    return singleTon;
}

// swift创建单例类
// MARK:- 单例类
final class wjSingleTon: NSObject {
    static let sharedInstance = wjSingleTon()
    var text : String!
    override init() {}
}

其他的传值方式在oc和swift中没有多大的差别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 彭静,我好想你啊。特别特别地想。我觉得我都快要把你忘记了。 彭静。我就是没有意识到你和我是两个人。我从来没有妈妈,...
    BelovedNutan阅读 449评论 0 0
  • 夏离愁, 栀香忧, 时光可解? 或更绵悠。 周围的这群笨猪将来谁来照顾, 他们能给的幸福, 又会被谁当成宝物? 好...
    叫我tt就好阅读 186评论 0 1
  • 人生总是有太多的繁花似锦,可是又有谁能做到知足常乐呢? 本该就是很简单的生活却有意无意之间被这宏大的人流卷入到了一...
    斯芬克斯wk阅读 198评论 0 0
  • 人的一生需要经历很多的选择,但是每个选择都决定着不一样的结果,或者好或者坏。一切的后果,都是自己当初的选择导致的,...
    杨二哥阅读 291评论 0 0