当前位置: 首页 > wzjs >正文

网站如何做数据库企查查在线查询

网站如何做数据库,企查查在线查询,可以做反链的网站,百度竞价网站怎么做一、OC的包装类 OC提供了NSValue、NSNumber来封装C语言基本类型(short、int、float等)。 在 Objective-C 中,**包装类(Wrapper Classes)**是用来把基本数据类型(如 int、float、char 等)“包装…

一、OC的包装类

OC提供了NSValue、NSNumber来封装C语言基本类型(short、int、float等)。

在 Objective-C 中,**包装类(Wrapper Classes)**是用来把基本数据类型(如 int、float、char 等)“包装”为对象的类。因为 Objective-C 是面向对象的语言,有时候我们需要把基本类型当作对象使用,比如:

  • 放入 NSArray、NSDictionary 这样的集合中(这些集合只能存放对象);

  • 使用对象方法对数值进行操作;

  • 与 Foundation 框架接口交互。

1.1 以下不是包装类:


        1、NSInteger:大致等于long型整数

        2、NSUInteger:大致等于unsigned long型整数
        3、CGFLoat:在64位平台相当于double,在32位平台相当于float


        以上的类型只是基本类型。为了更好的兼容不同的平台,当程序需要定义整形变量的时候,建议使用NSInteger,NSUInteger;当程序需要定义浮点型变量的时候,建议使用CGFLoat

1.2 以下是包装类:


        1、NSValue是NSNumber的父类,它代表一个更通用的包装类,可以包装int、short、long、float、char、指针、对象id等数据项。并将它们添加到NSArray、NSSet等集合中去。


        2、NSNumber是更具体的包装类,用于包装c语言的各种数值类型。它有如下三类方法:
            - [x] +numberWithXxx:直接将特定类型的值包装成NSNumber
            - [x] -initWithXxx:该实例方法需要先创建一个NSNumber对象,再用一个基本类型的值来初始化NSNumber
            - [x] -xxxValue:该实例方法返回该NSNumber对象包装的基本类型的值

        如上方法的Xxx是Int,Char,Double,string等各种数据类型。


        使用NSNumber的compare方法比较两个值,返回的对象可以转化为-1、0、1,分别代表小于、等于、大于。与bool值比较时,YES代表1,当另一个数大于1时返回1,小于1时返回-1。

        基本类型变量和包装类对象之间的转换关系可以理解为:基本类型变量通过调用numberWithXxx:类方法来转换并返回包装类对象;包装类对象通过调用xxxValue来获取基本类型的值。

 

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {NSNumber *num = [NSNumber numberWithInt:66];NSNumber *de = [NSNumber numberWithDouble:7.7];NSLog(@"%d",[num intValue]);NSLog(@"%g",[de doubleValue]);NSNumber *ch = [[NSNumber alloc] initWithChar:'t'];NSLog(@"%@",ch);}return 0;
}

二、处理对象

2.1 处理对象和description方法

在 Objective-C 中,打印对象(NSLog(@"%@", obj)) 实际上是调用对象的 -description 方法。这个方法决定了你在控制台看到的输出内容。

 一、NSLog(@"%@", obj) 做了什么?

当你写:

NSLog(@"%@", obj);

它相当于:

NSLog(@"%@", [obj description]);

也就是说:

        NSLog 并不会直接打印对象地址;

  • 它调用了 obj 的 -description 方法,获取一个 NSString* 类型的描述字符串来打印。


 二、默认行为

如果你没有重写 -description,那么会输出类似:

<ClassName: 0x10060ae50>

这是 NSObject 默认的格式,表示“类名 + 内存地址”。


 三、如何自定义打印内容?

你可以重写 -description 方法来自定义输出内容:

示例:

@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) int age;
@end@implementation Person
- (NSString *)description {return [NSString stringWithFormat:@"Person: name=%@, age=%d", self.name, self.age];
}
@end

使用:

Person *p = [[Person alloc] init];
p.name = @"Tom";
p.age = 20;
NSLog(@"%@", p);

输出:

Person: name=Tom, age=20

 四、打印集合对象(NSArray、NSDictionary)

集合类如 NSArray、NSDictionary、NSSet,当你 NSLog 打印它们时,它们也会调用内部所有对象的 -description 方法

NSArray *arr = @[p];
NSLog(@"%@", arr);

如果你没有给 p 写 -description,你就会看到一串地址;

如果写了,就会输出里面每个对象的自定义内容。

#import <Foundation/Foundation.h>@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) int age;
@end@implementation Person//重写 description 方法
- (NSString *)description {return [NSString stringWithFormat:@"Person: name=%@, age=%d", self.name, self.age];
}@endint main(int argc, const char * argv[]) {@autoreleasepool {Person *p = [[Person alloc] init];p.name = @"Tom";p.age = 20;// 打印对象NSLog(@"%@", p); // 自动调用 [p description]}return 0;
}

不重写 VS 重写后

<Person: 0x600000e812e0>Person: name=Tom, age=20

2.2 == 和 isEqual方法

oc中测试两个变量事都相等的方式有两个,分别是:==方法和isEqual方法

2.2.1 ==方法

当用==方法时,若️①两个变量是基本类型的变量,️②两个变量都是数值型的变量(不一定要求数据类型严格相等),️③两个变量的值相等。则==判断返回真,否则返回假。
        而对于指针类型的变量,则要两个指针指向同一个对象,则==返回真,否则返回假。
        当使用==的两个类没有继承关系时,编译器会提示警告。

@“hello”和[NSString stringWithFormat:@“hello”]的区别:
         当OC直接使用@”hello“,系统会使用常量池来管理这些字符串。常量池保证相同的字符串只会有一个,不会产生多个副本,因此创建的所有指向@“hello”的指针,指针变量保存的地址都是完全相同的。
         而使用[NSStringstringWithFormat:@“hello”]创建的字符串对象是运行时创建出来的,它被保存在运行时的内存中(即堆内存),不会放入常量池中。因此它的地址和@“hello”的地址并不相同。

以下代码演示了==的用法:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {int it = 65;int fl = 65.0f;char ch = 'A';NSString *str1 = @"hello";NSString *str2 = @"hello";NSString *str3 = @"byebye";NSLog(@"%d",(it==fl)); //结果为1NSLog(@"%d",(fl == ch)); //结果为1NSLog(@"%d",(str1 == str2)); //结果为1NSLog(@"%d",(str2 == str3)); //结果为0//常量池NSString *p1 = @"朱斌";NSString *p2 = @"朱斌";NSLog(@"p1地址:%p,p2地址:%p",p1,p2);NSLog(@"%d",(p1 == p2)); //结果为1NSString *p3 = [NSString stringWithFormat:@"朱斌"];NSString *p4 = [NSString stringWithFormat:@"朱斌"];NSLog(@"p3地址:%p",p3);NSLog(@"p4地址:%p",p4);NSLog(@"%d",(p1 == p3)); //结果为0NSLog(@"%d",(p4 == p3)); //结果为0NSString *p5 = [NSString stringWithFormat:@"zbchi"];NSString *p6 = [NSString stringWithFormat:@"zbchi"];NSLog(@"p5地址:%p",p5);NSLog(@"p6地址:%p",p6);NSLog(@"%d",(p5 == p6)); //结果为1}return 0;
}

2.2.2  isEqual方法

isEqual比较的是对象的内容。

isEqual默认实现是比较地址(跟 == 一样),但很多系统类(如NSString,NSArray,NSNumber)都 重写该方法 来比较内容。所以这个时候输出的是 内容相等

#import "FKPerson.h"@implementation FKPerson- (id) initWithName: (NSString*) name idStr: (NSString*) idStr {if(self = [super init]) {self.name = name;self.idStr = idStr;}return self;
}
- (BOOL) isEqual:(id) other {//如果两个对象指针相等,为同一个对象if(self == other) {return YES;}//当other不为nil且它为FKPerson的实例时if(other != nil && [other isMemberOfClass:FKPerson.class]) {FKPerson* target = (FKPerson*)other;//并且要判断当前对象的idStr和target对象的idStr相等才可以判断两个对象相等return [self.idStr isEqual: target.idStr];}return NO;
}@end

三、类别与拓展

在oc中,类别和拓展都是对类进行的“补充”机制。

3.1 类别

类别是oc中用于給已有方法添加方法的一种机制,不能添加成员变量

类别的定义:

命名规则:在接口文件部分的文件命名是“类名+类别名.h” 在实现部分的文件命名是“类名+类别名.m” 的形式。

类别的接口部分的声明和类的定义十分相似,但类别不继承父类,只需要在已有类的类名后面加一个括号,写入类别名,然后再在下面定义方法。

@interface ClassName (CategoryName)
- (void)newMethod;
@end@implementation ClassName (CategoryName)
- (void)newMethod {NSLog(@"Category method called");
}
@end

http://www.dtcms.com/wzjs/110818.html

相关文章:

  • 如何修改自己的网站标题数据查询网站
  • 网站建设与网络推广长春网站建设公司哪家好
  • 网站设计的文案青岛seo推广公司
  • 青岛网站建设有限公司安卓优化大师最新版
  • 网站怎么做滚动图片免费做网站怎么做网站吗
  • wordpress不会安装北京搜索引擎关键词优化
  • 表白网站制作教程百度推广引流
  • 网站运营及推广方案百度旅游官网
  • 杭州e时代互联网站建设百度入驻商家
  • 株洲网站建设公司宁波seo搜索引擎优化
  • 如何建立网站自己做站长16种营销模型
  • wordpress全站cdn搜索引擎哪个好用
  • 潜江58同城seo关键词挖掘
  • 电商购物网站模板下载so导航 抖音
  • 做中英文网站免费推广链接
  • 英文商务网站制作seo专业课程
  • 气血不足做网站广州品牌营销策划公司排名
  • 网上赚钱的门路seo服务公司怎么收费
  • 网上做行政能力测试题网站推荐aso优化{ }贴吧
  • 做网站编程要学什么it教育培训机构
  • 百度广州分公司总经理鄞州seo整站优化服务
  • 深圳向失业人员发放补贴郑州seo网络推广
  • 专门做私人定制旅游的网站优化推广服务
  • 网站建设好么免费网站怎么注册
  • 自己做下载网站苏州百度搜索排名优化
  • 网站建设需seo内容优化是什么意思
  • 临沂中文网站建设软文推广
  • 深圳网页设计培训费用关键词优化价格表
  • 永久域名怎么注册seoul是哪个国家
  • 青岛知名网站建设多少钱wordpress官网入口