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

目标C:为什么NSUInteger上的接收器类型无效而非NSString,而创建方式相同

在Objective-C中,NSUInteger是一种无符号整数类型,用于表示数组、集合等的索引或计数。它是一种基本数据类型,而不是一个接收器类型。因此,无法将NSUInteger作为接收器类型来调用方法或发送消息。

相反,NSString是Objective-C中的一个类,用于表示字符串对象。它是一个有效的接收器类型,可以调用该类定义的方法或发送消息给该对象。

在创建方式上,无论是NSUInteger还是NSString,都可以使用相同的方式进行创建。NSUInteger可以通过直接赋值或使用NSNumber进行初始化来创建。例如:

代码语言:objective-c
复制
NSUInteger index = 0;
NSNumber *number = @(index);

NSString可以通过直接赋值或使用NSString类方法进行初始化来创建。例如:

代码语言:objective-c
复制
NSString *string = @"Hello World";
NSString *anotherString = [NSString stringWithFormat:@"The index is %lu", (unsigned long)index];

需要注意的是,NSUInteger是一种基本数据类型,而NSString是一个类。它们具有不同的特性和用途,因此在使用时需要根据具体情况选择合适的类型。

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

相关·内容

编程规范之《招聘一个靠谱iOS》

age 属性类型:应避免使用基本类型,建议使用 Foundation 数据类型,对应关系如下: int -> NSInteger unsigned -> NSUInteger float -> CGFloat...动画时间 -> NSTimeInterval 同时考虑到 age 特点,应使用 NSUInteger而非 int 。...见: Log in vs. login ) 登录操作属于业务逻辑,观察类名 UserModel ,以及属性命名方式,该类应该是一个 Model 不是一个“ MVVM 模式下 ViewModel ”...(原因在下文有详细论述:用@property声明NSString(或NSArray,NSDictionary)经常使用copy关键字,为什么?)...快捷构造方法返回值,建议为 instancetype,为保持一致性,init 方法和快捷构造方法返回类型最好都用 instancetype。

63670

iOS-Foundation框架中常用

NSString NSString创建与内存存储 NSString是1个数据类型,用来保存OC字符串,NSString本质是1个类,既然是1个类,所以,最标准创建NSString对象方式如下: NSString...; 使用这种方式创建字符串是1个空字符@""。...NSString是OC中最常用1个类了,所以OC提供了一种更为快速创建字符串对象方式:使用前缀@ @"jack";本质这是1个NSString对象,这个NSString对象中存储是"jack...str1与str2指向相同地址 注意:存储在常量区数据不会被回收. 所以存储在常量区字符串对象也不会被回收. NSString常用方法 使用拼接方式创建1个NSString对象。...@property (readonly) NSUInteger length; 得到字符串中指定下标的字符,返回值是unichar类型 要打印的话使用%C

1.7K100
  • 对象、消息、运行期--8:对象等同性isEqual:、hash

    对象等同性 对象等同性 :我们在使用对象时候,往往需要判断两个对象是否相等,这种相等包含两种含义: 在程序是否是同一块内存地址 在语义,是否能指代同一对象 NSString *str = @...2、判断俩个对象所属类是否相同 3、判断每个属性是否相同 -(NSUInteger)hash 为什么要hash方法?...,和数组相比,基于hash值索引hash Table查找某个成员过程就是 step1:通过hash值直接找到查找目标的位置 step2:如果目标位置上有多个相同hash值成员,此时再按照数组方式查找...检测方式是先看俩个数组所含对象个数是否相同,如果相同,那么每个位置俩个对象身上调用isEqual方法,如果对应位置相等,那么俩个数组就相等,这种方式叫深度等同性判断 如果我们Person类实例是根据数据库数据创建...+Objective-C 2.0 编写高质量iOS与OS X代码52个有效方法

    13510

    iOS @property探究(一): 基础详解你要知道@property都在这里

    属性(property)提供了一种安全、便捷方式来与这些属性(attribute)交互,不需要手动编写一系列访问方法,如果需要的话可以自定义getter和setter方法来覆盖编译器自动生成相关方法...@property基本用法 手工创建getter与setter @interface Person : NSObject { NSString *_name; NSUInteger _age...当有很多变量需要设置时,这样手工创建setter和getter方式难免很繁琐,因此合成存取方法就诞生了。...copy方法获取一个不可变对象,因此p.name地址和s地址不同,p.name运行时类型NSString,调用appendString:方法会抛出异常。...前文介绍copy修饰符时候讲过,在修饰NSString这样不可变对象时候使用copy修饰,但其实当给对象赋一个NSString时仍旧只复制了指针不是拷贝内容,原因同上。

    1.7K90

    一份走心iOS开发规范

    属性/函数/参数/变量/常量/宏 命名应该具有上下文或者全局一致性,相同类型或者具有相同作用变量命名方式应该相同或者类似。...方法命名也应该具有上下文或者全局一致性,相同类型或者具有相同作用方法命名方式应该相同或者类似。 // 该方法同时定义在NSView、NSControl、NSCell这三个类里面。...你也可以使用const来创建和其他常量不相关整型常量。否则,请使用枚举类型创建。即,如果一个整型常量和其他常量不相关,可以使用const来创建,否则,使用枚举类型表示一组相关整型常量。...block中return代表是使当前block返回,而非使当前整个函数体返回。以下使用NSArray举例,其他集合类型同理。...说明:异步线程默认是没有runloop,除非手动创建主线程是系统会自动创建Runloop。所以在异步线程调用是请先确保该线程是有Runloop

    12K145

    Objective-C中NSArray类解读

    :(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格数组创建NSArray对象 需要注意,C数组中需要为Objective对象,cnt...参数为C数组长度 //如果cnt值小于C数组长度,则会对C数据进行截取赋值,如果大于则程序会崩溃 - (instancetype)initWithObjects:(const ObjectType...)range; //获取与给定元素相同元素在数组中最小下标值 - (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject; //在一定范围内...获取与给定元素相同元素在数组中最小下标值 - (NSUInteger)indexOfObjectIdenticalTo:(ObjectType)anObject inRange:(NSRange)...idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0); //通过遍历方式查找符合条件元素下标 - (NSUInteger)indexOfObjectPassingTest

    1.3K20

    【IOS开发进阶系列】IOS常用开发技巧专题

    怎么说尼,笔者认为这个还是比较有用滴,为什么有用尼?     因为在Xcode断点调试时候, 在控制台输入 po self.view.frame 或者 po id 类型时候就死翘翘了。     ...如果po指令是一个id类型也可以正常打印。是不是感觉方便很多呀? 反正我是这么觉得。至于有没有用就看个人需要咯~~! 如何删除? 好吧, 那么问题来了, 我用命令创建, 如果不想玩了怎么办尼??..., 不会输出形参名).若用gcc编译C程序,__PRETTY_FUNCTION__跟__FUNCTION__功能相同....代码基础 5.1     数据类型相关 5.1.1 Objective-Cinstancetype和id区别     instancetype作用,就是使那些非关联返回类型方法返回所在类类型!...1、相同点     都可以作为方法返回类型 2、不同点 ①instancetype可以返回和方法所在类相同类型对象,id只能返回未知类型对象; ②instancetype只能作为返回值,不能像id

    41240

    id类型和instancetype类型

    这些方法被称为“有一个关联返回类型方法,也就是说发给这些方法中任意一个消息都会返回一个以相同静态类型代替接收类类型一个实例,例如: @interface NSObject + (id)alloc...类似的,表达式[[NSArray alloc] init]也是NSArray *类型,因为init返回类型也是一个关联返回类型,同时也知道它接收器有一个NSArray *类型。...实际,Apple对于这个主题是这么解释: 在你代码中,在合适地方用返回类型instancetype代替id类型。这通常出现在init方法和类工厂方法。...不过,还是有其他例子存在,比如length方法,在UILayoutSupport中返回CGFloat,在NSString里返回NSUInteger 对于初始化器,这个就更加复杂了。...见前面instancetype定义。 这也就是为什么很多人会说使用instancetype不是必须。当然我认为你还是应该去这么写。下面会解释为什么: 这有三个好处: 明确性。

    1.8K10

    面经之《招聘一个靠谱iOS》import CYLBlockExecutor.himport CYLBlockExecutor.himport CYLNSObject+RunAtDeallo

    而在正规 Objective-C 编码风格中,存取方法有着严格命名规范。 正因为有了这种严格命名规范,所以 Objective-C 这门语言才能根据名称自动创建出存取方法。...getter 方法也会以 init 开头,编译器会把所有以 init 开头方法当成初始化方法,初始化方法只能返回 self 类型,因此编译器会报错。...什么时候会报unrecognized selector异常? 简单来说: 当调用该对象某个方法,该对象没有实现这个方法时候, 可以通过“消息转发”进行解决。...每个 Objective-C 对象都有相同结构,如下图所示: enter image description here 翻译过来就是 Objective-C 对象结构图 ISA指针 根类实例变量...这也就是为什么说“不推荐在 init 方法中使用点语法”,如果想访问实例变量 iVar 应该使用下划线( _iVar ),而非点语法( self.iVar )。

    1K100

    编码篇-开发中关于数字那些事儿

    为什么使用floatValue、doubleValue 转化后数据会出现误差。 要回答这点,我们先要明白这是浮点数在计算机中存储方式就决定。先来了解下浮点数在计算机中存储方式。...至于想知道为什么是 -128-127不是 -127-127同学可以看这里 为什么8位二进制补码范围是-128-127,不是-127-127 。...单精度浮点数8.25存储方式 其中float存储方式如下图所示: ? float类型存储方式 double 存储方式为: ?...如何愉快与数字玩耍 酌情避免使用 float ,更多地使用 double float类型最大容量是8位(大于15万浮点数字就会出现不精确了(笔者做过遍历测试),double类型容量为16位(...NSDecimal是C语言级别的无法直接创建,不幸是,基础框架没有直接创建方法,你只能先创建生成一个 NSDecimalNumber 再得到对应 NSDecimal。

    1.2K10

    iOS中「回调(callback)」

    Objective-C中有4种途径可以实现回调: 1、Target-action/目标-动作对 先看代码: // 为按钮添加回调——Target-action/目标-动作对 // 第一个参数:发送消息给谁.../目标-动作对 // 第一个参数:发生哪种类型点击事件会触发回调(这里表示2秒后触发回调) // 第二个参数:发送消息给一个Logger实例(Logger是自定义类) // 第三个参数:事件发生后,...书上是这样描述:「当某事件发生时,向遵守相应协议辅助对象发送消息。」...// 在文件顶部(#import之下)用typedef将Block重新定义为一种新数据类型 typedef void(^YourBlockName)(id, NSString *, NSUInteger...import CoreBluetooth; // 步骤1: // 将Block重新定义为一种新数据类型 // 这个Block无返回值;有一个参数(类型NSUInteger) typedef void

    3.4K30

    iOS_Effective Objective-C 20 编写高质量iOS与OS X代码52个有效方法

    想要声明一个变量,令其指代某个对象,可用如下语法: NSString *string = @"Hello world"; ​ 这种语法基本是照搬C语言,它声明了一个名为string变量,其类型NSString...,而应提供相关方法修改对象中可变collection 19、使用清晰协调命名方式 1、方法命名: 如果方法返回值是新创建,那么方法名首个词应该是返回值类型。...domain定义成NSString类型全局常量,code则定义成枚举类型为佳。...分类目标在于扩展类功能,而非封装数据。 ​ 但有时候只读属性还是可以在分类中使用。如:为NSCalendar类创建分类,返回各个月份名称数组。虽说仅是访问数据不需要实例变量来实现。...这种情况下,运行期系统会吧消息发到新对象那里,此对象也许能应答,也许不能。如果能,那么程序就不崩溃,可你会觉得奇怪:为什么收到消息对象不是预想那个呢?

    1K40

    iOS @property探究(二): 深入理解你要知道@property都在这里

    你要知道@property都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 一篇文章iOS @property探究(一):基础详解介绍了...,如有兴趣可以参考iOS 深入代码理解类对象)你只需要知道这个Person就是我们创建类对象就好了,这个类对象包含了Person类所需所有东西,包括属性、方法列表、版本号等一系列信息。...这两个值是运行时计算出偏移量硬编码(hard code)写入,这样好处在于,如果你使用了一个库,这个库类定义比较旧,链接代码使用是版本较新代码,增加了几个实例变量,你程序运行时也不会报错...如果不使用合成存取方法定义实例变量而使用手工方式创建,这个偏移量就是编译器计算出硬编码写到代码中,如果类定义和链接库版本不一致则可能发生指针错误,因此鼓励大家尽量都使用合成存取方法。...从结构体中值不难看出,属性描述中T@表示是类型对象后接类型名称,C表示copy,N表示nonatomic,V_cjmName表示实例变量。

    1K70

    利用Runtime实现简单字典转模型

    回归到我们拿到这些属性类型初衷,是为了用字典中类型与模型中属性类型进行对比,想要对比,需要拿到属性类型,因此需要将这些编码转换成一个表示类类,创建一个类用来包装类型。...(nonatomic, readonly) Class typeClass; @end OC对象可以通过Class来表示类型基本数据类型只能用布尔来标识。...把这些名字和类型遍历出来,肯定是为了以后有用,所以需要把它们存起来,由于它们是一个"整体",所以还是设计一个类将他们包装起来比较好,创建一个包装成员属性类--ScottProperty。...= @"c"; NSString *const ScottPropertyTypeBOOL1 = @"c"; NSString *const ScottPropertyTypeBOOL2...当模型属性是char类型或者bool类型时,获取到编码都是c,并且bool还有可能是B编码,它们都对应_boolType,因为数字类型包含布尔类型,所以bool类型要在数字类型条件下进行额外判断。

    1.9K60

    利用Runtime实现简单字典转模型

    回归到我们拿到这些属性类型初衷,是为了用字典中类型与模型中属性类型进行对比,想要对比,需要拿到属性类型,因此需要将这些编码转换成一个表示类类,创建一个类用来包装类型。...(nonatomic, readonly) Class typeClass; @end OC对象可以通过Class来表示类型基本数据类型只能用布尔来标识。...把这些名字和类型遍历出来,肯定是为了以后有用,所以需要把它们存起来,由于它们是一个"整体",所以还是设计一个类将他们包装起来比较好,创建一个包装成员属性类--ScottProperty。...= @"c"; NSString *const ScottPropertyTypeBOOL1 = @"c"; NSString *const ScottPropertyTypeBOOL2...当模型属性是char类型或者bool类型时,获取到编码都是c,并且bool还有可能是B编码,它们都对应_boolType,因为数字类型包含布尔类型,所以bool类型要在数字类型条件下进行额外判断。

    1.2K30

    SDWebImage 图片下载缓存框架 常用方法及原理

    NSCache SDImageCache内处理内存警告,以通知方式,clearMemory cleanDisk执行过程 i....(例如更新头像),专门处理相同url,但不同image情况 原因:默认情况下,SDWebImage会忽略Header中缓存设置,将图片以url为key进行保存,url与图片是一一对应关系。...*)sharedImageCache; 2、创建缓存空间 在沙盒cache目录下创建一个指定名字缓存空间(文件夹) - (id)initWithNamespace:(NSString *)ns;...在磁盘指定目录(directory)下创建一个指定名字缓存空间 - (id)initWithNamespace:(NSString *)ns diskCacheDirectory:(NSString...void)cleanDisk; 8、获取缓存大小、缓存个数 获取磁盘缓存大小 - (NSUInteger)getSize; 获取磁盘上缓存图片个数 - (NSUInteger)getDiskCount

    3.1K40

    《设计模式:可复用面向对象软件基础》学习并理解 23 种设计模式

    在类结构设计,每一个类都应当尽量降低其成员变量和成员函数访问权限。在类设计,只要有可能,一个类型应当设计成不变类。在对其他类引用上,一个对象对其他对象引用应当降到最低。...,将产品本身与产品创建过程解耦,使得相同创建过程可以创建不同产品对象。...不同类型代理可以对客户端对目标对象访问进行不同控制: 远程代理,使得客户端可以访问在远程机器对象,远程机器 可能具有更好计算性能与处理速度,可以快速响应并处理客户端请求。...,在同一个聚合对象可以定义多种遍历方式。...观察者模式没有相应机制让观察者知道所观察目标对象是怎么发生变化仅仅只是知道观察目标发生了变化。

    3.5K20
    领券