NSlog的%@是如何打印出字符串信息的

在OC中,我们通过NSlog打印的时候往往使用:

NSlog(@"%@",myIPhone);

打印的结果,往往是我们所需要的一些信息, 但是%@其实本质只是取到一个地址.

我们先建一个Iphone类,声明如下的成员变量.

@public

float _cpu;  //描述cpu功能的变量

float _ram;  //描述内存功能的变量

IPColor _color;  // 描述颜色的变量

IPSize  _size;   // 描述尺寸的变量

声明一个方法,在m文件中实现

- (void) aboutMyIphone{

NSLog(@"我的手机信息cpu:%f color=:%d size:%d ram:%f",_cpu,_color,_size,_ram);

}

在main函数中,我们导入头文件然后创建一个myIphone的对象并对它进行赋值,然后获取它的信息就可以通过调用上面这个方法.

但是想要直接在main文件中通过:

NSlog(@"%@",myIPhone);

打印,结果却是一个地址信息,并没有能通过调用上面函数的得到一个具体的字符串的信息.

所以,我们在Iphone类中写这样一个方法:

-(NSString *)description{

NSString*str=[NSString stringWithFormat:@"我的手机信息:cpu:%f   ram: %f  Color: %d  Size:%d" ,_cpu,_ram,_color,_size];

return  str;

}

这个description方法是NSObject中已经有的方法,我们只需要对它进行重写,即可将%@所得的地址改变为我们所需的字符串.

时间: 2025-01-12 10:09:51

NSlog的%@是如何打印出字符串信息的的相关文章

4.4 从请求中打印出按键信息

4.4 从请求中打印出按键信息 4.4.1 从缓冲区中获得KEYBOARD_INPUT_DATA 请求完成后,读到的信息在Irp_AssociatedIrp.SystemBuffer中.这里需要介绍一下这个缓冲区中的数据格式.这个缓冲区中可能含有n个KEYBOARD_INPUT_DATA 结构(这个结构在WDK的头文件中有定义). typedef struct _KEYBOARD_INPUT_DATA{ //头文件里的解释是这样的:对设备\Device\KeyboardPort0,这个 //值是

【SSH三大框架】Struts2基础第七篇:log4j打印出日志信息

把这个归于Struts2是不太合适的,因为log4j是一个开源的代码项目,不仅仅可以用在Struts2上. 我们介绍一下log4j:通过使用log4j,我们可以把一些信息输出到控制台.文本文件.html文件等等中 首先,创建一个java project,我们建立一个lib目录,然后把log4j-1.2.15.jar或者其它版本的包引入进来并添加到path中去. 然后,我们定义一个简单的逻辑类UserDao.java package cn.com; import org.apache.log4j.

2016.06.06 周一 C语言 将字符串根据字符的ASCII码从大到小排序并打印出字符串中的字符类型的总数

第一次变量冲突问题 解决了一个多小时,.... 代码如下: ↓ #include<stdio.h> #include<string.h> #define N 200 //输入字符串的最大长度 int main() { //************************输入开始部分******************************** printf("请输入字符串.(长度在200以内)\n\n"); int i=0,j,k,temp,lowLetter

java如何LOG打印出日志信息

<dependency>--> <!--<groupId>org.slf4j</groupId>--> <!--<artifactId>slf4j-log4j12</artifactId>--> <!--<version>1.6.4</version>--></dependency> private static final Logger LOG = LoggerFac

022给定一个字符串类型(string)表示的小数,打印出它的二进制表示(keep it up)

给定一个字符串类型(string)表示的小数,打印出它的二进制表示. 这个题注意字符串的合法性. 不过下面的代码没有处理那种无限循环的小数, 当出现无限循环小数时,while(other>0)可能永久为true 代码: #include <iostream> #include <string> std::string to_binary_string(const std::string& vNumStr) { std::string::size_type Pos =

查找“asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd”, 打印出该字符串中有多少个&quot;af&quot;。

#include <stdio.h>#include <string.h> /*查找“asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd”, 打印出该字符串中有多少个"af".*/ void main(){ char str[] = "asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd"; int i = 0,count = 0; for(i

利用Socket连接到某个端口并打印出它所找到的信息

//连接到某个端口并打印出它所找到的信息 package socket; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class SocketTest { public static void main(String[] args) thro

java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序

package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数 */ String str="琅琊榜fengqichanglin

有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数

1.有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数. Map接口定义的集合又称查找表,用于存储所谓"Key-Value"映射对.Key可以看成是Value的索引,作为Key的对象在集合中不可以重复. import java.util.HashMap; import java.util.Map; public class Demo { public static void main(String[] args) throws Exception{ Str