IOS中的swift和oc关于对象模型的description方法重写
IOS中的swift和oc关于对象模型的description方法重写
先讲OC的,oc比较重要,放在最前面.
首先创建一个cocoa Touch Class,继承NSObject, 命名Person
点h文件写几个属性
#import <Foundation/Foundation.h>
@interface AHLJPerson : NSObject
@property(nonatomic,copy)NSString * name;
@property(nonatomic,assign)int age;
@property(nonatomic,assign)double height;
@end
重写description方法
- -(NSString *)description
{
return [NSString stringWithFormat:@"<%p %@,{name: %@,age: %d,height: %f}>",self, [self class],self.name,self.age,self.height ];
}
书写的格式较多,我认为这种格式较规范,描述的也清楚.
重写触摸屏幕事件 - -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
AHLJPerson *p1 = [[AHLJPerson alloc] init];
p1.name = @“jack”;
p1.age = 18;
p1.height = 178;
AHLJPerson *p2 = [[AHLJPerson alloc] init];
p2.name = @“rose”;
p2.age = 19;
p2.height = 160;
NSLog(@"%@",p1);
NSLog(@"%@",p2);
}
控制台打印内容
2021-10-18 13:29:55.553929+0800 decriptionTest[9278:202074] <0x600002a757c0 AHLJPerson,{name: jack,age: 18,height: 178.000000}>
2021-10-18 13:29:55.554015+0800 decriptionTest[9278:202074] <0x600002a757e0 AHLJPerson,{name: rose,age: 19,height: 160.000000}>
swift的description方法;
import UIKit
class UserAccount: NSObject {@objc var access_token: String?@objc var expires_in: TimeInterval = 0@objc var uid: String?init(dict: [String: NSObject]){super.init()//KVCself.setValuesForKeys(dict)}init(dict: [String: Any],title: String){super.init()//KVCself.setValuesForKeys(dict)}override var description: String{let keys = ["access_token","expires_in","uid"]//数组return dictionaryWithValues(forKeys: keys).description}
}
测试主要代码,自己写一个函数去调用一下
let dictTest1: [String: Any] = ["access_token": "2.00tIZE123we455489c55clskLbD", "expires_in": "157679999", "uid": "5335345699"]
let account1 = UserAccount(dict: dictTest1, title: "")
debugPrint(account1)
日志:
["access_token": 2.11tI789pF0l1kIyhfdsf1c55clskLbD, "expires_in": 15764579999, "uid": 5564567845699]
顺带把java的也说一下,
java一般重写toString方法,alt + insert键 可以重写,苹果电脑idea的快捷键是cmd + N,为了返璞归真,我这里没有使用Lombok,而是使用原生的方法
package com.example.demo.pojo;
public class Person {private String name;private int age;private double height;public Person(){}public Person(String name, int age, double height) {this.name = name;this.age = age;this.height = height;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", height=" + height +'}';}
}
我用junit测试的,也可以使用静态的main方法测试
@Testvoid contextLoads() {Person p1 = new Person("jack",18,178);Person p2 = new Person("rose",17,178);System.out.println(p1);System.out.println(p2);System.out.println(p1.getClass());System.out.println(p1.hashCode());System.out.println(p2.hashCode());}
日志:
Person{name='jack', age=18, height=178.0}
Person{name='rose', age=17, height=178.0}
class com.example.demo.pojo.Person
33558975
1373220972
IOS中的swift和oc关于对象模型的description方法重写相关推荐
- iOS中使用swift语言做淘宝的第三方登录
现在第三方登录是在大部分APP都有的功能,我们最近项目中使用了淘宝的第三方登录,这个我们平时使用的较少,而且使用的是swift3.0,调用oc语法,使用过程中还是遇到了些问题,所以现 ...
- iOS中延时执行(睡眠)的几种方法
1. 最直接的方法: [self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 此方式要求必须在主线程中 ...
- IOS中截屏的实现,很简易的方法
#import <QuartzCore/QuartzCore.h> 添加QuartzCore.framework库 -(void) screenShot { UIGraphicsB ...
- iOS中JS 与OC的交互(JavaScriptCore.framework)
iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...
- 为何 iOS 越来越偏爱 Swift?
[CSDN编者按]本月初,苹果已经面向所有iPhone用户,推送了iOS 12.0.1正式版.那么,iOS 12.0中Swift的应用是个什么样子?iOS中使用Swift的二进制文件数目又有怎样的变化 ...
- IOS开发基础Object-C( 04)—构造方法和description方法
在上一篇博客中,我们简单介绍了一下点语法和self,相信大家对点语法以及self有了一点的了解,点语法的本质就是调用get方法和set方法.那么今天我们再来介绍一下构造方法和description. ...
- iOS 中 OC项目使用swift第三方工具(OC、swift 混合)
OC项目引入swift, 1.建立 bridge 文件:在OC工程中新建swift文件,确认创建时,会提示建立 一个 项目名-bridging-header.h 文件. 2,建立 bridge 文件之 ...
- iOS开发笔记之九十——在OC项目中支持Swift
*****阅读完此文,大概需要5分钟****** 这个过程不复杂,但是有些问题遇到了可能就会捣弄很久,特此输出此文,希望可以帮助大家快速解决相应的问题. 一.配置步骤 1.主项目中添加工程名-Brid ...
- iOS四种多线程(swift和oc)
在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 ...
最新文章
- AI能写出靠谱医学报告了,CVPR2021收录 | 腾讯医典出品
- 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
- Cube 技术解读 | 详解「支付宝」全新的卡片技术栈
- 演练 多班分数录入统计优秀人数
- JDBC解析9_UpdateWithResultSet
- python---用python实现插入排序
- paip.语义相关是否可在 哈米 的语义分析中应用
- 程序员小技巧-----如何提升电脑速度
- 联想x100e linux,联想小红ThinkPad X100e笔记本拆解!
- VisionPro工具说明
- Java-TreeMap集合
- 高效能人士的七个习惯读后感与总结概括-(第四章)
- 自动化有道云笔记自动签到+看广告奖励
- 产品经理快(ku)乐(bi)的一天~
- 项目遇到的难点、印象深刻点总结
- ESMap平台在线开发工具介绍-易景空间地图
- numpy中stack的用法直观理解
- 医疗器械软件 软件生存周期过程
- 易基因2022年度DNA甲基化研究高分项目文章精选
- c语言教程github,GitHub - saitjr/C-Toturials: C语言教程
热门文章
- centos7启动dhcp失败_4:Nginx服务启动、停止、重启
- pysql与mysql的区别_postgresql与mysql的区别是什么
- 提高vivado的编译速度
- python英文语义角色标注_【顶会100秒】基于相似词计算的旅游词汇语义分析
- 纯jsp实现评论功能_自己实现的java手写tomcat
- HLS:@E Simulation failed SIGSEGV
- 手动选择显示_QGIS 二次开发笔记(2)——显示图层
- 20220208--CTF MISC-- BUUCTF--工具stegsolve的使用
- add git 指定类型文件夹_UE4 使用git配合远程仓库
- 性能测试报告模板_性能测试规范之测试报告