首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不推荐使用的userInfo字典键的可移植代码(Cocoa)

不推荐使用的userInfo字典键的可移植代码(Cocoa)是指在Cocoa框架中,不建议使用特定的userInfo字典键来传递数据或信息的代码。这是因为在Cocoa框架中,userInfo字典键是一个通用的键,用于在不同的类和方法之间传递任意类型的数据。然而,由于它的通用性,使用userInfo字典键可能导致以下问题:

  1. 缺乏类型安全:由于userInfo字典键可以存储任意类型的值,因此在使用时需要进行类型转换,这增加了代码的复杂性,并且容易引入类型错误。
  2. 可读性差:由于userInfo字典键是一个通用的键,它没有明确的语义,因此在代码中使用userInfo字典键传递数据时,很难理解传递的具体含义。
  3. 难以维护和调试:由于userInfo字典键是一个通用的键,它可能被多个方法使用,当需要修改或调试代码时,很难确定哪些方法使用了userInfo字典键,以及它们的具体含义。

为了解决这些问题,推荐使用更具有语义的自定义键来传递数据或信息。通过使用自定义键,可以提高代码的可读性和可维护性,并减少类型错误的可能性。

在Cocoa框架中,可以使用NSNotification、KVO(Key-Value Observing)或自定义的代理模式来传递数据或信息,这些方法都提供了更好的类型安全和可读性。

对于Cocoa开发中的可移植代码,腾讯云并没有直接相关的产品或服务。然而,腾讯云提供了丰富的云计算产品和服务,包括云服务器、云数据库、云存储等,可以帮助开发人员构建可靠、安全和高性能的应用程序。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数据库推荐使用 9 个理由

让我们来看看数据库可以没有外原因。首先一个简短免责声明(因为文章引发了一些关于LinkedIn群体争议): 下面的理由绝不鼓励不要在数据库中使用约束。...这仅仅是我在各种渠道(主要是互联网论坛)都能找到许多开发人员、架构师为什么不使用它们理由。我个人(和许多其他经验丰富数据库专家)建议在任何可能地方使用它们(不会导致更多问题)。...通常,成本大于收益,开发人员不用担心外。 4.更高层次框架 一些应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。...这些框架可以自己创建数据库表,而总是创建外使用这些工具开发人员很少会干扰自动生成模式,并且不需要外。...这需要一些努力,但是却没有带来直接好处。一些架构师和数据库管理员只是忽略了这一部分。 9.保持模型秘密 也许这是一个很遥远问题,但也许有时候是因为人们希望别人知道太多太容易。

1.7K30

数据库推荐使用9个理由

来源:www.jdon.com/49188 我经验告诉我,很多数据库(大多数我曾经使用包含外时并不总是一件坏事。在这篇文章中,我想把重点放在为什么原因上。 为什么这是一个问题?...让我们来看看数据库可以没有外原因。首先一个简短免责声明(因为文章引发了一些关于LinkedIn群体争议): 下面的理由绝不鼓励不要在数据库中使用约束。...通常,成本大于收益,开发人员不用担心外。 4.更高层次框架 一些应用程序使用编程框架,在物理数据库之上创建另一个逻辑层。...这些框架可以自己创建数据库表,而总是创建外使用这些工具开发人员很少会干扰自动生成模式,并且不需要外。...一个完美的自我解释设计可能会使他们过时。但这只是我理论。 正文结束 【推荐阅读】 Java高效开发12个精品库 所有和Java中代理有关知识点都在这了。 (完) ?

2.1K10

python自学成才之路 字典详细用法

文章目录 字典介绍 遍历字典 1.遍历字典 2.遍历字典值 3.遍历和值 字典嵌套 1.字典列表 2.字典中嵌套列表和字典 字典介绍 字典使用{}表示,内部是一个个键值对,类似于java中map...字典必须是hash,像字符串和整形是hash,但是如果使用列表或者字典作为则会报不能hash异常,如下所示 listtest = ['ds','ds'] userInfo[listtest...,如果在字典使用不同类型代码不会报错,但是一遍不会这样做,而且不同类型在后续操作中容易出问题,所以最好不要使用不同类型。...# 建议使用不同类型 userinfo = {} userinfo[1] = 'hello' userinfo['2'] = 'world' print(userinfo) 输出: {1: 'hello...', '2': 'world'} 在字典使用不同类型值比较常见,比如定义一个userInfo字典用来表示用户信息,其中键全是字符串类型,值有字符串类型,也有整形,还有字典类型和列表类型。

49831

Python 字典Dictionary详解

字典添加新内容方法是增加新/值对,修改或删除已有/值对如下实例:    实例      #!...字典特性   字典值可以没有限制地取任何python对象,既可以是标准对象,也可以是用户定义,但不行。   两个重要点需要记住:   1)不允许同一个出现两次。...2len(dict)计算字典元素个数,即总数。3str(dict)输出字典打印字符串表示。4type(variable)返回输入变量类型,如果变量是字典就返回字典类型。  ...,以序列 seq 中元素做字典,val 为字典所有对应初始值4dict.get(key, default=None)返回指定值,如果值不在字典中返回default值5dict.has_key...(key)如果字典dict里返回true,否则返回false6dict.items()以列表返回遍历(, 值) 元组数组7dict.keys()以列表返回一个字典所有的8dict.setdefault

79830

Objective-C中老板是这样发通知(Notification)

Cocoa通知及时遵循是一种广播模式。     ​    ​暂且这么类比着,这是根据我个人理解而想出例子,可能会有不足之处,希望大家批评指正,转载请注明出处。     ​    ​...Boss -(void)sendMessage {     //把要发送信息放入字典中(boss要在论坛中说的话)     NSDictionary *message = @{@"notification...:     ​    ​    ​    ​1.老板要发消息要放在字典中才能发布,字典key是帖子主题,value是帖子内容     ​    ​    ​    ​2.创建通知对象就好比老板登陆内部论坛...)     NSDictionary *bossInfo = [notification userInfo];     //输出收到信息     NSLog(@"人力资源部门收到:%@", bossInfo...最后呢,也是最重要,登录完论坛如果你不使用了,要注销也就是要退出。那么通知也是一样,你需要在dealloc方法中移除观察者即可。 ​

97860

python字典详解

字典是Python中唯一內建映射类型,可以存储任意对象容器,比如:字符串,列表,元组,自定义对象等;字典(key)与值(value)组成,基本语法如下: {key:value, ... .....字典中每个Key是唯一,key必须是哈希(后面我们介绍); 这节我们来看下字典基本知识点: 1>字典定义、遍历、修改; 2>理解字典key; 4>字典相关函数; 1.字典定义与访问 1.1...,万科A,特力A为value 1.2 使用dict方法: dict是Python字典类,可以使用字典相关方法定义字典,具体如下: #列表或者元组中每个元素必须为列表或者元组且长度为2 phoneprice...,字典为空报错 D.clear() 删除字典所有元素 D.pop(k[,d]) 详解: 1>k为删除,d为给定返回值; 2>若k存在,删除k并返回k对应value; 3>若k不存在,且d有值,返回...,可以使用字典来解决工作和学习中问题。

75010

NSNotificationCenter 通知使用方法详解你要知道KVC、KVO、Delegate、Notification都在这里

id object; //字典类型用户信息,用户可将需要传递数据放入该字典中 @property (nullable, readonly, copy) NSDictionary *userInfo;...anObject为接受通知对象,通知传参时可使用该方法 */ - (void)postNotificationName:(NSNotificationName)aName object:(nullable...,这一点比KVO更加安全,KVO在监听器对象销毁后仍会触发回调函数就可能造成野指针错误,因此使用通知也就可以手动删除监听器了,但如果需要适配iOS9之前系统还是需要养成手动删除监听器习惯。...,需要使用GCD放在主线程中执行,代码如下: //NextViewController发送通知代码修改为如下代码: - (void)completeButtonClickedHandler {...字典数据 NSDictionary *userInfo = [notification userInfo]; //根据UIKeyboardBoundsUserInfoKey获取键盘高度

2.2K60

建议大型项目用上Try Catch建议大型项目用上Try Catch

对于像我这样根本不懂JS语法和精通JSPatch的人来说,真的是蓝瘦,香菇。...import Cocoa enum OFileMagerImportError:Error { case cannel //点击了取消按钮 case error(message:String...我们平时遇到一些崩溃问题所在 数组越界 给一个可变数组强行赋值不可变,之后当做可变数组用 字典值不存在 后台返回字段统一,本来有值是字典,没值是字符串。...怎么做异常处理 做很多if else判断 使用Try catch进行处理 虽然两个都要写很多代码,if else代码更加优美一点,但是就怕有一种情况你没写出来。...但是在Release发布之后运行完全没有任何影响。 虽然我们平时写代码上面,不可能让所有出现异常地方写上这样代码

85010

python 终级篇 django --

(*field): 返回一个ValueQuerySet——一个特殊QuerySet,运行后得到并不是一系列model实例化对象,而是一个迭代字典序列 values_list...all() filter() exclude() order_by() reverse() distinct() 特殊QuerySet values()       返回一个迭代字典序列 values_list...也就是什么情况下使用管理对象---->>>> 它存在于下面两种情况: 外关系反向查询 多对多关联关系 简单来说就是当 点后面的对象 可能存在多个时候就可以使用以下方法。...名称是聚合值标识符,值是计算出来聚合值。名称是按照字段和聚合函数名称自动生成出来。...def prefetch_related(self, *lookups) 性能相关:多表连表操作时速度会慢,使用其执行多次SQL查询在Python代码中实现连表操作。

2.9K20

iOS开发入门笔记

最常用设计模式之Delegate Cocoa Touch大量使用Delegate(委派)设计模式。...常用控件:按钮、文本块、图片、输入框 TableView WebView 导航条 Xcode 运行 快捷:Comman R 搜索 搜索文本 搜索文件 新建文件/目录 推荐在Finder中新建好再添加进来...,白苹果触控板天然支持多指触摸,但要定位到模拟器区域再响应多指手势就需要借助一些额外啦: 按住Option,再用两个手指去操作触摸板,模拟双指拖动、旋转 按住Option+Shift,模拟双指合拢...Xcode中代码结构与操作系统上文件系统并不一致 推荐在Finder里建好目录再到XcodeProject Navigator中点击“Add Files to”添加到项目中 iPhone 5适配...教程 Apple官方教程 Cocoa Dev Center 维基上Objective-C语言简介 –中文,十分钟可读完,推荐

3.9K60

Python0基础(上)——期末不挂科

,毕竟老师讲真的岌岌危,写这篇博客目的也很简单,就是以补挂科为前提而创作,码民奖学金已经丢了,希望有的人因为python而失去评奖,还是那句话,假如你不想要钱的话,什么活动都可以参加,所以说我感觉我丢了...5.互动模式:互动模式支持,您可以从终端输入执行代码并获得结果语言,互动测试和调试代码片断。 6.移植:基于其开放源代码特性,Python已经被移植(也就是使其工作)到许多平台。...7,扩展:如果你需要一段运行很快关键代码,或者是想要编写一些不愿开放算法,你可以使用C或C++完成那部分程序,然后从你Python程序中调用。...两者之间区别在于:字典当中元素是通过来存取,而不是通过偏移存取。 字典是一种映射类型,字典用 { } 标识,它是一个无序 (key) : 值(value) 集合。...(key)必须使用不可变类型。 在同一个字典中,(key)必须是唯一

43830

ORM常用操作

,运行后得到并不是一系列model实例化对象,而是一个迭代字典序列 values_list(*field): 它与values()非常相似,它返回是一个元组序列,values返回是一个字典序列...all() filter() exelude() order_by() reverse() distinct() 特殊QuerySet values() 返回一个迭代字典序列...它存在于下面两种情况: 外关系反向查询 多对多关联关系 简单来说就是当 点后面的对象 可能存在多个时候就可以使用以下方法。...名称是聚合值标识符,值是计算出来聚合值。名称是按照字段和聚合函数名称自动生成出来。...def prefetch_related(self, *lookups) 性能相关:多表连表操作时速度会慢,使用其执行多次SQL查询在Python代码中实现连表操作。

2K10

Django学习笔记之Django ORM相关操作

,运行后得到并不是一系列model实例化对象,而是一个迭代字典序列 values_list(*field): 它与values()非常相似,它返回是一个元组序列,values返回是一个字典序列...all() filter() exclude() order_by() reverse() distinct() 特殊QuerySet values()       返回一个迭代字典序列 values_list...它存在于下面两种情况: 外关系反向查询 多对多关联关系 简单来说就是当 点后面的对象 可能存在多个时候就可以使用以下方法。...名称是聚合值标识符,值是计算出来聚合值。名称是按照字段和聚合函数名称自动生成出来。...def prefetch_related(self, *lookups) 性能相关:多表连表操作时速度会慢,使用其执行多次SQL查询在Python代码中实现连表操作。

3.6K40

MagicalRecord,一个简化CoreData操作工具库

Core Data初始化与清理 如果在创建工程之初勾选了使用Core Data选项,系统会自动在AppDelegate中生成大量Core Data初始化与清理代码.但是那些完全各使用一行代码代替...暂时, 推荐阅读Importing Data Made Easy ,它发表在 Cocoa Is My Girlfriend.这篇文档大部分都是基于Saul原始文章....(下图中 mappedKeyName为系统保留字段,用来指定要映射key,具体细节往下阅读即可) 供参考: 用户模型信息中和值在一个字典中存储,每个实体,属性,和关系都关联这样一个字典.这个字典可以通过...NSEntityDescription对象userInfo方法取出....往往,要导入数据中和结构和你实体属性与关系匹配.在这种情况下,你需要告诉 MagicalRecord 如何映射你要导入数据到你CoreData模型中匹配属性或关系.

1.5K50

面试突击77:Spring 依赖注入有几种?各有什么优缺点?

使用简单,只需要给变量上添加一个注解(@Autowired),就可以在 new 对象情况下,直接获得注入对象了(这就是 DI 功能和魅力所在),所以它优点就是使用简单。...1.2 缺点分析 然而,属性注入虽然使用简单,但也存在着很多问题,甚至编译器 Idea 都会提醒你“建议使用此注入方式”,Idea 提示信息如下: 属性注入缺点主要包含以下 3 个: 功能性问题...缺点2:通用性问题 使用属性注入方式只适用于 IoC 框架(容器),如果将属性注入代码移植到其他非 IoC 框架中,那么代码就无效了,所以属性注入通用性不是很好。...优点4:通用性更好 构造方法和属性注入不同,构造方法注入适用于任何环境,无论是 IoC 框架还是非 IoC 框架,构造方法注入代码都是通用,所以它通用性更好。...其中属性注入写法最简单,所以日常项目中使用频率最高,但它通用性不好;而 Spring 官方推荐是构造方法注入,它可以注入不可变对象,其通用性也更好,如果是注入可变对象,那么可以考虑使用 Setter

89420
领券