这里总结一下字符串NSString与NSMutableString。 一....NSMutableString NSMutableString对象代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,因此前面介绍的NSString所包含的方法...,NSMutableString都可以直接使用,NSMutableString对象也可直接当成NSString对象使用。...stringWithString,用不可变字符串创建可变字符串: //从不可变字符串创建可变字符串 mstr = [NSMutableString stringWithString...*mstr; 14 NSRange substr; 15 16 //从不可变字符串创建可变字符串 17 mstr = [NSMutableString
char *c1 = "abc"; NSString *str4 = [NSString stringWithUTF8String:c1]; NSLog(@"%@",str4);//abc NSMutableString...NSMutableString *str = [NSMutableString string]; NSLog(@"%@",str); //字符串拼接 [str appendString...OccurrencesOfString:需要替换的字符串 //withString:用什么替换 //options:替换时的搜索方式 //range:搜索范围 //返回值:替换了多少个 NSMutableString...*strM = [NSMutableString stringWithFormat:@"abcdefgbc"]; NSUInteger count = [strM replaceOccurrencesOfString
现在大伙儿慢慢转向苹果的新开发语言Swift,似乎亦不必花太多时间在Objective-C上。...在2006年的WWDC大会上,苹果发布了Objective-C 2.0,其中就包括Properties这个新的语法,把原来的实例变量定义成Properties(属性)。...因此,写getter和setter,可算是Objective-C中「约定俗成」的做法了。...所以,现在我们写@property声明属性,其实是做了三件事 .h: 声明了getter和setter方法; .h: 声明了实例变量(默认:下划线+属性名); .m: 实现了getter和setter方法...如果用copy修饰NSMutableString,在赋值的时候会报如下警告: Incompatible pointer types assigning to 'NSMutableString *' from
答案:(C) A、@property B、@interface C、@required D、@protocol 17、 NSMutableString * str = [[NSMutableString...B、Objective-C一个完整的类分为interface和implementation两块 C、Objective-C对象使用new分配内存,用delete释放 D、Objective-C协议分为非正式协议和正式协议...B、NSMutableString是可变字符串。即本身内容可改动。 C、NSMutableString是NSString的子类。...D、NSString和NSMutableString没有不论什么关系。...答案:(F) 正确 错误 5、 Objective-C 能够多重继承。
你要知道的@property都在这里 本文大纲 Apple Adopting Modern Objective-C翻译 @property基本用法 @property修饰符详解 @property进阶话题...Apple Official Property Introduction Objective-C的属性(property)是通过用@property定义的公有或私有的方法。...当声明一个属性(property)的时候编译器默认情况下会自动生成相关的getter和setter方法 更好的声明一组方法。因为访问方法的命名约定,可以很清晰的看出getter和setter的用处。...或者,你也可以使用Xcode中的modern Objective-C转换器来自动转换你的代码。参考Refactoring Your Code Using Xcode。...为了方便使用,Objective-C允许使用点语法来访问getter和setter。
现在的面试中,传统大厂如 BAT 对 Objective-C 的语言进行较多考察,日常开发也是以 Objective-C 为主。...Objective-C 面试实战题 8.属性声明代码风格考查 关键词:#属性声明 @property (nonatomic, strong) NSString *title; @property (assign...因为 NSString 是不可变的数据类型,它有对应的 NSMutableString 的数据类型,用 strong 来修饰会有 NSString 被修改的可能性。...如果对可变类型如 NSMutableString 用 copy 来修饰,那么当对其进行修改时,程序会崩溃。 workID 不应该用 int,而应该用 NSInteger。...属性声明时,最好遵循原子性,读写,内存管理的顺序。这样可读性更高。
关于属性声明的限定词,我在下面这几篇文章中都有过介绍,这里不再赘述: 1,内存管理之MRC 2,Effective Objective-C 2.0——理解“属性”这一概念 3,Copy 和 Strong...通过这些文章,我们有了一个共识:在声明NSString类型的属性的时候需要采用copy内存管理策略。...(1)OC是一门面向对象的语言,面向对象三大特性:继承、封装、多态,所以我们是可以通过声明一个父类指针,去指向不同的子类对象的。...在封装的场景中,我们声明一个NSString类型的属性,它可能会指向NSString类型的变量,也可能会指向NSMutableString的对象,此时必须要使用copy,这一点问题没有。...(支持反方) (2)根据第一条,我们要求声明String类型的属性的时候使用strong,但是要同时保证在业务场景下不能将NSMutableString类型的变量赋值给NSString类型的属性。
一直以来使用的解析方式(iOS13之前)都是如下: Objective-C: NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet...stackoverflow中有人说过这样的解析方式并不好,但是一直没有问题,所以大家也就习惯了这样的解析方式了,但是iOS13中这样的解析方式就有问题了 大家可以更新解析方式为下面这样的方式(兼容各个版本): Objective-C...ntohl(tokenBytes[6]), ntohl(tokenBytes[7])]; NSLog(@"deviceToken:%@",hexToken); } Objective-C...[deviceToken isKindOfClass:[NSData class]]) return; NSMutableString *valueString = [NSMutableString string
Reference Counting)简称ARC, 默认的是ARC模式,在ARC下是不能直接调用retain,release, releaseCount等方法的,需要在XCode中进行设置,设置如下: 把Objective-C...16 17 //用可变数组来测试内存的访问 NSMutableArray *array = [NSMutableArray arrayWithCapacity:3]; //可变的字符串 NSMutableString...*str = [[NSMutableString alloc] initWithString:@"aa"]; //这时的retain = 1; NSLog(@"新建str时的 strRetain...24.450 Memory[2448:303] 移除一个元素后 strRetain = 2 2.NSString的retainCount的变化 用NSString声明的字符串变量的...:303] 传入的变量FomatRetainCount = 3 2014-08-03 20:18:37.240 Memory[2499:303] 传入的变量RetainCount = 3 Objective-C
Category的用法 在Obj-C中,声明某一个已有类的Category扩展的方法如下: [html] view plaincopy @interface ClassName (CategoryName...File->New->File然后选择 Cocoa Touch Objective-C category.命名为ReverseNSString.系统会自动生成一个固定格式ClassName+CategoryName...@implementationNSString (ReverseNSString) + (NSString*)reverseString:(NSString*)strSrc; { NSMutableString... *reversedString =[[NSMutableString alloc]init]; NSInteger charIndex = [strSrc length]; while...Category 不添加成员变量 @property 声明的属性只会自动生成get,set方法,并不能生成下划线的成员属性 延展(Extension) 类的延展就如同时“匿名”的分类,延展中声明的方法在类本身的
Objective-C 部分 1. 你如何理解OC 的内存管理 OC 内存管理是基于引用计数。...id) copyWithZone:(NSZone *)zone; copy 和mutableCopy 是什么 mutableCopy 可变拷贝NSString --àmutableCopy-àNSMutableString...NSArray --àmutableCopy-àNSMutableArray; NSMutableString -àcopy---NSString #import 和#include
Objective-C里核心的处理字符串的类就是NSString和NSMutableString这两个类,这两个类完成了Objective-C中字符串大部分功能的处理,我们今天的重点就是这两个类了。...NSMutableString是动态的字符串,可以动态的添加,修改,删除等,并且NSMutableString继承自NSString,所以NSString中的方法在NSMutableString都可以使用...*mutableStr1 = [[NSMutableString alloc] initWithCapacity:20]; //2.初始化容量为Capacity大小的字符串 (不需要手动释放内存...) NSMutableString *mutableStr2 = [NSMutableString stringWithCapacity:20]; 2.2 可变字符串扩展方法 NSMutableString...*str = [NSMutableString stringWithString:@"string"]; //////////插入////////// [str insertString
前提是实现NSCopying协议的copyWithZone:方法,否则会导致出现找不到selector的崩溃。**unrecognized selector s...
Objective-C语言的动态性主要体现在以下3个方面 (1)动态类型:运行时确定对象的类型。 (2)动态绑定:运行时确定对象的方法。
could go though the safe way which is remove the that null character, or the unsafe way similar to the Objective-C...data || [data length] == 0) { return @""; } NSMutableString *string = [[NSMutableString
在2015年的WWDC上苹果推出了Swift 2.0版本,为了让开发者能从Objective-C更好的过度到Swift上,苹果也为Objective-C带来了Generics泛型的支持。...__kindof UIView *> *subviews; // 这样写代码就没有警告了: UIButton *button = view.subviews.lastObject; 3、自定义泛型 声明一个...不同类型的泛型可以互相转换: MOCollection *collection; MOCollection *string_collection; MOCollection <NSMutableString...cnt NS_DESIGNATED_INITIALIZER; 参考: iOS 强大的泛型 Covariance and contravariance (computer science) 2015 Objective-C...Objective-C 自定义泛型 我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?
头文件包含类,类型,函数和常数的声明。 .m 源代码文件。这是典型的源代码文件扩展名,可以包含 Objective-C 和 C 代码。 .mm 源代码文件。...下图是一个名为MyClass的类声明介绍: class.png 声明 遵循C语言的规范,类声明一般定义在.h头文件中。类声明以关键字@interface作为开始,@end作为结束。...声明 下图为Objective-C内置数组类型的insertObject方法声明: method.png 方法实际的名字(insertObject:atIndex:)是所有方法标识关键的级联,包含了冒号...不过在Objective-C 2.0引入了新的语法以声明变量为属性, 并包含一可选定义以配置访问方法的生成。属性总是为公共的,其目的为提供外部类访问(也可能为只读) 类的内部变量的方法。...以下三种声明在运行时效力是完全相同的, 但是三种声明提供了一个比一个更明显的类型信息, 附加的类型信息让编译器在编译时可以检查变量类型,并对类型不符的变量提出警告。
本站在互联网上的地址是:https://blog.zhuxu.xyz/,为个人性质的非盈利博客,博主的其他网站不适用于本政策。本站的服务器与内容分发网络均位于中...
DOCTYPE>声明有助于浏览器中正确显示网页。 网络上有很多不同的文件,如果能够正确声明HTML的版本,浏览器就能正确显示网页内容。 doctype 声明是不区分大小写的,以下方式均可: ---- 通用声明 HTML5 HTML 4.01 <!
用 @property 声明 NSString、NSArray、NSDictionary 经常使用 copy 关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray...在iOS开发中,你会发现,几乎所有属性都声明为 nonatomic。...“属性” (property)作为 Objective-C 的一项特性,主要的作用就在于封装对象中的数据。 Objective-C 对象通常会把其所需要的数据保存为各种实例变量。...这个概念已经定型,并且经由“属性”这一特性而成为 Objective-C 2.0 的一部分。 而在正规的 Objective-C 编码风格中,存取方法有着严格的命名规范。...所以, 用 @property 声明 NSString、NSArray、NSDictionary 经常使用 copy 关键字,是因为他们有对应的可变类型:NSMutableString、NSMutableArray
领取专属 10元无门槛券
手把手带您无忧上云