..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更好的模式作为参数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)