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

将NSNumber对象分配给NSString对象不会导致任何错误或警告

将NSNumber对象分配给NSString对象不会导致任何错误或警告,但这样做可能会导致程序逻辑上的错误。因为NSNumber是一个数字对象,而NSString是一个字符串对象,它们的数据类型不匹配。在Objective-C中,对象分配是基于引用计数的,所以将NSNumber对象分配给NSString对象实际上是将NSNumber对象的引用赋值给NSString对象。这样做可能会导致程序在运行时出现异常或错误。

如果需要将NSNumber对象转换为NSString对象,可以使用以下方法:

代码语言:objective-c
复制
NSNumber *number = @(42);
NSString *string = [number stringValue];

这样就可以将NSNumber对象转换为NSString对象,而不会导致任何错误或警告。

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

相关·内容

iOS - 老生常谈内存管理(二):从 MRC 说起

任何对象都可以拥有一个多个所有者。只要一个对象至少拥有一个所有者,它就会继续存在。如果对象没有所有者,则运行时系统会自动销毁它。...虽然一般情况下我们可能不会同时满足以上条件而导致错误,但是为了避免错误的发生,我们还是规范编写代码比较好。 性能下降。特别是,如果属性是atomic的。 可能产生副作用。...循环引用会导致它们中的任何对象都无法dealloc,就产生了内存泄漏。...集合持有它们包含的对象对象添加到集合(例如array,dictionaryset)时,集合获得对象的所有权。当从集合中移除对象集合本身被销毁时,集合放弃对象的所有权。...在@autoreleasepool之后,你应该块中任何autorelease对象视为 “已销毁”。不要向该对象发送消息将其返回给你的方法调用者。

1.5K21

WKWebView详解

,因此,在初始化之后,你再对传入的对象进行修改是不会生效的 使用initWithFrame: 初始化方法会使用默认的WKWebViewConfiguration进行初始化 --- 查看View的信息 WebView...WKNavigationResponsePolicyCancel 取消加载 WKNavigationResponsePolicyAllow 允许继续 WKNavigationAction WKNavigationAction对象包含了可能导致一次加载的操作的信息...previewingViewController; previewingViewController就是即将展示的预览页面 你需要将这个预览界面在界面中继续展示,以保持预览的连贯性 如果你在这里什么也不做,用户的pop操作什么也不会改变...系统标题作为一个快速选择表单中的选项,当用户在上面滑动时可以看到。...WKBackForwardList对象仅仅维护的是列表数据,并不会执行任何实际的网页加载的操作,不会产生任何客户请求。如果你需要产生一次页面加载,请使用loadRequest: 这些方法。

20.6K193
  • iOS_Tagged Pointer是什么,结构

    文章目录 iOS Tagged Pointer 问题 原理 结构 NSNumber NSString 特点 测试 测试准备: NSNumber NSString 注意事项 isa指针 面试题 题1:执行以下两段代码...iOS Tagged Pointer 问题 如果要存一个NSNumber对象,其值是一个整数。...原理 指针(8字节)拆成两部分:一部分直接保存数据,另一部分作为标记(这是一个特别的指针,不指向任何一个地址) (拿一个整数来说,4个字节所能表示的有符号整数就可达20 多亿,注:2^31=2147483648...而当字符少于10个时,系统采用了Tagged Pointer机制数据直接存储在指针上。 objc_release 内部会判断,如果是Tagged Pointer则不会进行release,直接赋值。...所以不会导致过度释放的BAD_ACCESS错误

    44830

    一次标签指针(Tagged Pointer)导致的事故

    问题回溯 当问题出现之后,我们来看看是犯了哪些错误,才会导致问题的出现: ssShowTime 属性虽然是long,但是内部实现的时候还是通过NSNumber类来实现,所以这里不应该使用OBJC_ASSOCIATION_ASSIGN...ssLocalDesc属性是字符串,字符串通常使用strong或者copy,那么这里使用OBJC_ASSOCIATION_ASSIGN本身就是错误的。...我们知道Crash是由于OBJC_ASSOCIATION_ASSIGN不会引用计数加1,导致对象被释放出现野指针的情况。那么我们在number对象挂载之前,看下对象的引用计数。...(lldb) p CFGetRetainCount(number) (CFIndex) $0 = 9223372036854775807 如果排除掉引用计数出错的可能,我们可以理解为什么number对象不会被释放...再回到问题1,我们知道NSNumber也使用类似的标签指针(Tagged Pointer)。当数字较小的时候,NSNumber就不是真正的对象,而是一个标签指针,并不会对象一样走销毁释放的流程。

    1.3K10

    iOS - 关于 KVC 的一些总结

    ② 数组运算符:根据运算符的条件,符合条件的对象以一个NSArray实例返回。 ③ 嵌套运算符:处理集合对象中嵌套其他集合对象的情况,并根据运算符返回一个NSArrayNSSet实例。...然后结果以NSNumber实例返回。 // 计算上表中 amount 的总和。...注意: 在使用数组运算符时,如果有任何操作的对象为nil,则valueForKeyPath:方法引发异常。...如果集合中有非集合元素,会导致Crash。 在使用嵌套运算符时,如果有任何操作的对象为nil, 则valueForKeyPath:方法引发异常。...如果找到就返回一个代理对象,该代理对象接收所有NSMutableArray消息,通常是NSMutableArray其子类。否则执行④。

    1.9K10

    Cocoa内存管理的简单规则

    方法 描述 -retain 给一个对象的引用计数加1 -release 给一个对象的引用计数减1 -autorelease 在将来的某些时候一个对象的引用计数减1 -alloc 分配一块内存给对象,引用计数器将设为...]; [zero release]; } 这将导致当你第一次访问count的时候发生错误。...便捷构造方法返回一个autoreleased对象,所以你不必使用release。 在使用autoreleased后这样做,减少count的计数到0,这个对象将被释放。...当你之后视图访问count的时候,你向一个自由对象(free object)发送调用消息(message),通常你将得到一个SIGBUS 10的错误。...因为number加入数组的时候,已经retain它了,所以数组中的number变量不会被release ---- Previous 给iPhone

    49110

    转的两种读音区分_category怎么读

    类别使得无需创建对象类的子类就能完成同样的工作 一、创建类别 1、声明类别 声明类别与声明类的形式很相似 @interface NSString(NumberConvenience) -(NSNumber...2、实现类别 @implementation NSString(NumberConvenience) -(NSNumber *)lengthAsNumber {...无法添加实例变量的局限可以使用字典对象解决 4、类别的作用 类别主要有3个作用: (1)类的实现分散到多个不同文件多个不同框架中。...类别的方法具有最高的优先级 类别可以分散到不同文件中,甚至不同框架中 三、使用类别创建前向引用 如果其他类中的方法未实现,在你访问其他类的私有方法时编译器报错 这时使用类别,在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告...browser release ];//run方法一直保持运行而不返回,所以包含此行之后的代码不会被运行 [finder release ]; [pool release ]; return

    54440

    iOS-代码规范

    字面量语法 ---- 尽量使用字面量值来创建 NSString , NSDictionary , NSArray , NSNumber 这些不可变对象: 推荐这样写: NSArray *names =...所有返回类对象和实例对象的方法都应该使用instancetype instancetype关键字作为返回值的时候,可以让编译器进行类型检查,同时适用于子类的检查,这样就保证了返回类型的正确性(一定为当前的类对象实例对象...单例不能作为容器对象来使用 单例对象不应该暴露出任何属性,也就是说它不能作为让外部存放对象的容器。它应该是一个处理某些特定任务的工具,比如在iOS中的GPS和加速度传感器。...忽略没有使用变量的编译警告 对于某些暂时不用,以后可能用到的临时变量,为了避免警告,我们可以使用如下方法这个警告消除: - (NSInteger)giveMeFive { NSString *foo...手动标明警告错误 手动明确一个错误: - (NSInteger)divide:(NSInteger)dividend by:(NSInteger)divisor { #error Whoa, buddy

    2.2K20

    使用iOS原生sqlite3框架对sqlite数据库进行操作

    */ #define SQLITE_ERROR        1   /* SQL数据库错误或者丢失*/ #define SQLITE_INTERNAL     2   /* SQL内部逻辑错误 */...SQLITE_NOTICE      27   /* 来自sqlite3_log()的通知 */ #define SQLITE_WARNING     28   /* 来自sqlite3_log() 的警告...1.面向对象的sqlite管理类的设计思路         为了便于使用,在设计时,我们尽量libsqlite3中的方法不暴漏在使用层,通过面向应用的接口来进行方法的设计,设计思路类图如下: ?...        操作数据库的核心方法封装在这个类中: YHBaseSQLiteContext.h /**  *操作的数据库名称  */ @property(nonatomic,strong)NSString...array addObject:dic];     }      sqlite3_finalize(statement);     statement=nil;     return array; } 5.错误信息类可以数据库操作中的异常抛出提示开发者

    2.1K10

    iOS 代码规范

    字面量语法 尽量使用字面量值来创建 NSString , NSDictionary , NSArray , NSNumber 这些不可变对象: 推荐这样写: NSArray *names = @[@"Brian...所有返回类对象和实例对象的方法都应该使用instancetype instancetype关键字作为返回值的时候,可以让编译器进行类型检查,同时适用于子类的检查,这样就保证了返回类型的正确性(一定为当前的类对象实例对象...单例不能作为容器对象来使用 单例对象不应该暴露出任何属性,也就是说它不能作为让外部存放对象的容器。它应该是一个处理某些特定任务的工具,比如在iOS中的GPS和加速度传感器。...忽略没有使用变量的编译警告 对于某些暂时不用,以后可能用到的临时变量,为了避免警告,我们可以使用如下方法这个警告消除: - (NSInteger)giveMeFive { NSString...手动标明警告错误 手动明确一个错误: - (NSInteger)divide:(NSInteger)dividend by:(NSInteger)divisor { #error Whoa

    2.4K20

    iOS-Foundation框架中常用的类

    NSString *str1 = @"rose"; @"rose"本质上是1个NSString对象,这个对象中存储的是字符串"rose"。 这个字符串对象的地址返回赋值给str1指针。...str1与str2指向相同的地址 注意:存储在常量区的数据不会被回收. 所以存储在常量区的字符串对象不会被回收. NSString类的常用方法 使用拼接的方式创建1个NSString对象。...; // 换换为小写 去掉字符串前后的大写小写字母,掉头尾指定的字符串 - (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *...NSString与NSMutableString的使用场景 当我们需要多次使用一个固定的字符串的时候还是尽量使用NSString,因为NSString的恒定性,保证不会创建多余的重复的对象,效率会更高,...NSNumber 因为NSArray和NSDictionary都无法存储基本数据类型,所以NSNumber就是用来基本数据类型转化为对象的。

    1.7K100

    Objective-C关于id引发的一些思考 原

    一、还要先说id     id是Objective-C中定义的一种泛型实现,它可以表示任何对象类型。...尽管id看起来是如此简单,但细细琢磨,其却包含了3层意义: 1.作为参数返回值     id类型作为函数的参数返回值是最浅的一层意义,其增加了函数的灵活性,Foundation框架中也有其大量的应用...因此,你可以id类型的变量赋值给任何对象类型,也可以任何对象类型的变量赋值给id类型,更重要的是,使用id类型的对象可以调用任意方法,都不会进行类型检查。...事实上,在MRC环境下确实如此,ARC环境下则要更复杂一些,由于ARC机制要对Objective-C对象进行引用计数管理,对C指针并不会,因此在ARC环境下编译器是不允许我们直接id于void*进行进行转换的...三、ARC中用__bridge的应用     前面说过,由于ARC的原因,导致无法在Objective-C对象与C指针类型之间进行直接转换,但是可以通过__bridge来转换,从字面理解,__bridge

    1.1K60

    Objective—C语言的新魅力——Nullability、泛型集合与类型延拓

    可以将对象声明成Optional,用于在开发中标记这个对象是否可以为空。在OC中,以前是没有这样的功能的,因此我们在开发中会经常遇到因为某个函数应该返回实例而返回了空导致的崩溃。...例如: -(void)setValue:(NSNumber * _Nonnull )number{      } 我们在调用函数时,如果传入了空值,编译器会给我们警告: ?...) *  array; } @end 当然,所有这些都是我自己的自导自演,编译器并不会鸟我,我在这个数组中加其他的东西,它也不会介意,所有这些只是我和我的伙伴们约定的一种一厢情愿。...在我们向这个数组中追加元素的时候,编译器元素的类型提示了出来,并且FromArray方法中需要的元素类型也提示了出来。...因此,就有了逆变和协变这个概念: __covariant :子类型指针可以向父类型指针转换 __contravariant:父类型指针可以向子类型转换 上面的情况,我们将自定义的类做如下修改,就不会出现警告

    1K30

    【IOS 开发】Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射

    , 指针 等数据; -- NSNumber 包装类 : 用于包装 C 语言数据类型; NSNumber 方法 :  -- "+ numberWithXxx :" : 特定类型的值包装成 NSNumber...* str = @"hello"; // 通过调用 类 对象的 class 方法 NSLog(@"[str class] : %@, [NSString class] : %@", [str...class], [NSString class]); // 通过调用 类 对象的 getter 方法获取, 即用 ....检查继承关系 (1) 继承关系判断 继承关系判断方法 :  -- 判断类 : isMemberOfClass 方法, 传入 Class 对象, 判断该对象是否是 Class 对象对应类的实例; -- 判断类子类...: isKindOfClass 方法, 传入 Class 对象, 判断该对象是否是 Class 对象对应类 子类的实例; -- 判断协议 : conformsToProtocol 犯法, 传入 Protocol

    71810

    图文混排

    设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄 ​ NSStrikethroughStyleAttributeName 设置删除线,取值为 NSNumber...设置阴影属性,取值为 NSShadow 对象 ​ NSTextEffectAttributeName 设置文本特殊效果,取值为 NSString 对象...1、这个管理器监听文本存储中文本属性改变的通知,一旦接收到通知就触发布局进程。...文本视图它自己并不会任何绘制;它仅仅提供一个供其它类绘制的区域。作为视图层级机构中唯一的组件,第二个目的是处理所有的用户交互。...具体来说,文本视图实现 UITextInput 的协议来处理键盘事件,它为用户提供了一种途径来设置一个插入点选择文本。它并不对文本做任何实际上的改变,仅仅这些改变请求转发给刚刚讨论的文本存储。

    1.5K30
    领券