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方法重写相关推荐

  1. iOS中使用swift语言做淘宝的第三方登录

             现在第三方登录是在大部分APP都有的功能,我们最近项目中使用了淘宝的第三方登录,这个我们平时使用的较少,而且使用的是swift3.0,调用oc语法,使用过程中还是遇到了些问题,所以现 ...

  2. iOS中延时执行(睡眠)的几种方法

    1. 最直接的方法: [self performSelector:@selector(deleyMethod) withObject:nil afterDelay:1.0]; 此方式要求必须在主线程中 ...

  3. IOS中截屏的实现,很简易的方法

    #import <QuartzCore/QuartzCore.h> 添加QuartzCore.framework库 -(void) screenShot {     UIGraphicsB ...

  4. iOS中JS 与OC的交互(JavaScriptCore.framework)

    iOS中实现js与oc的交互,目前网上也有不少流行的开源解决方案: 如:react native 当然一些轻量级的任务使用系统提供的UIWebView 以及JavaScriptCore.framewo ...

  5. 为何 iOS 越来越偏爱 Swift?

    [CSDN编者按]本月初,苹果已经面向所有iPhone用户,推送了iOS 12.0.1正式版.那么,iOS 12.0中Swift的应用是个什么样子?iOS中使用Swift的二进制文件数目又有怎样的变化 ...

  6. IOS开发基础Object-C( 04)—构造方法和description方法

    在上一篇博客中,我们简单介绍了一下点语法和self,相信大家对点语法以及self有了一点的了解,点语法的本质就是调用get方法和set方法.那么今天我们再来介绍一下构造方法和description. ...

  7. iOS 中 OC项目使用swift第三方工具(OC、swift 混合)

    OC项目引入swift, 1.建立 bridge 文件:在OC工程中新建swift文件,确认创建时,会提示建立 一个 项目名-bridging-header.h 文件. 2,建立 bridge 文件之 ...

  8. iOS开发笔记之九十——在OC项目中支持Swift

    *****阅读完此文,大概需要5分钟****** 这个过程不复杂,但是有些问题遇到了可能就会捣弄很久,特此输出此文,希望可以帮助大家快速解决相应的问题. 一.配置步骤 1.主项目中添加工程名-Brid ...

  9. iOS四种多线程(swift和oc)

    在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项.当然也会给出几种多线程的案例,在实际使用中感受它们的区别.还有一点需要说明的是,这篇文章将会使用 Swift 和 ...

最新文章

  1. AI能写出靠谱医学报告了,CVPR2021收录 | 腾讯医典出品
  2. 【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现
  3. Cube 技术解读 | 详解「支付宝」全新的卡片技术栈
  4. 演练 多班分数录入统计优秀人数
  5. JDBC解析9_UpdateWithResultSet
  6. python---用python实现插入排序
  7. paip.语义相关是否可在 哈米 的语义分析中应用
  8. 程序员小技巧-----如何提升电脑速度
  9. 联想x100e linux,联想小红ThinkPad X100e笔记本拆解!
  10. VisionPro工具说明
  11. Java-TreeMap集合
  12. 高效能人士的七个习惯读后感与总结概括-(第四章)
  13. 自动化有道云笔记自动签到+看广告奖励
  14. 产品经理快(ku)乐(bi)的一天~
  15. 项目遇到的难点、印象深刻点总结
  16. ESMap平台在线开发工具介绍-易景空间地图
  17. numpy中stack的用法直观理解
  18. 医疗器械软件 软件生存周期过程
  19. 易基因2022年度DNA甲基化研究高分项目文章精选
  20. c语言教程github,GitHub - saitjr/C-Toturials: C语言教程

热门文章

  1. centos7启动dhcp失败_4:Nginx服务启动、停止、重启
  2. pysql与mysql的区别_postgresql与mysql的区别是什么
  3. 提高vivado的编译速度
  4. python英文语义角色标注_【顶会100秒】基于相似词计算的旅游词汇语义分析
  5. 纯jsp实现评论功能_自己实现的java手写tomcat
  6. HLS:@E Simulation failed SIGSEGV
  7. 手动选择显示_QGIS 二次开发笔记(2)——显示图层
  8. 20220208--CTF MISC-- BUUCTF--工具stegsolve的使用
  9. add git 指定类型文件夹_UE4 使用git配合远程仓库
  10. 性能测试报告模板_性能测试规范之测试报告