HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 比传递NSDictionaries更好的模式作为参数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_616_0@
随着我们的代码库的成熟,我开始不喜欢将字典作为一种方法来传递消息传递的信息,或者更糟糕的是函数参数.它需要发送和接收功能都具有未记录的字符串文字API.
..in some function..
NSDictionary *info = [NSDictionary DictionaryWithObjectsAndKeys:
                         thisObject,@"thisKey",thatObject,@"thatKey",nil];

[[NsnotificationCenter defaultCenter] postNotificationName:@"MY_NOTIFICATION" object:nil userInfo:info];
....

然后在someClass的听众中

- (void)someClassListener:(Nsnotification *)notification {
    NSDictionary *info = [notification userInfo];

    ThisObject *ob1 = [info objectForKey:@"thisKey"];
    ThatObject *ob2 = [info objectForKey:@"thatKey"];
}

你必须记住thisKey和thatKey是该通知的ThisObject和ThatObject类型的键,确定你可以为某些键创建一些常量,但这并不能真正解决问题.

并且假设你有一个需要15个参数的函数,你不打算用15个参数创建一个函数,只是传递一个字典会更容易(然不太可读)但现在你遇到了与上面相同的问题.

在这些类的头文件中创建了“消息类”(即一个标题中的两个接口),而消息类只是一个对象列表,您定义并发送给方法,这会创建一个更强的契约,但这感觉错误.

如果我可以在标题中执行类似typeDef参数对象的操作,但是它不支持NSObject的唯一内容,如int或float等,那就太棒了.

本质上我正在尝试在消息发送者和消息接收者之间创建一个更强大的契约,即函数通知.

解决方法

您可以为键定义常量.作为示例,请参阅UIKeyboardDidShowNotification的文档以获取示例.所有密钥都有一个链接,可用于获取有关通知的信息.

更好的方法是将数据封装到类而不是字典中.创建一个包含属性的简单类.这将比字典更自我记录.您可以在.h文件中查看属性名称属性类型.

如果您发现需要15个参数的方法,则需要退回并将这些参数封装到适当的类中.也许该方法适当地减少了几个参数和类或类似的东西.

大佬总结

以上是大佬教程为你收集整理的ios – 比传递NSDictionaries更好的模式作为参数?全部内容,希望文章能够帮你解决ios – 比传递NSDictionaries更好的模式作为参数?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。