le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Per stampare l'indirizzo dell'oggetto puntato dal puntatore e l'indirizzo del puntatore stesso, è possibile utilizzare %p
carattere di formato per restituire l'indirizzo del puntatore.Il codice seguente mostraoriginalString
EcopiedString
L'indirizzo del puntatore e l'indirizzo che punta all'oggetto:
NSString *originalString = @"Hello, World!";
NSString *copiedString = [originalString copy];
// 打印字符串内容
NSLog(@"Original: %@", originalString); // 输出: Hello, World!
NSLog(@"Copied: %@", copiedString); // 输出: Hello, World!
// 打印指针本身的地址
NSLog(@"Original pointer address: %p", &originalString);
NSLog(@"Copied pointer address: %p", &copiedString);
// 打印指针指向对象的地址
NSLog(@"Original object address: %p", originalString);
NSLog(@"Copied object address: %p", copiedString);
I risultati di esecuzione di Xcode versione 15.1 (15C65) e simulatore (iPhone 15) sono i seguenti:
// 打印的内容一样
Original: Hello, World!
Copied: Hello, World!
// 指针本地的地址不一样,说明是不同的指针
Original pointer address: 0x7ff7b1a5fa98
Copied pointer address: 0x7ff7b1a5fa90
// 不同的指针指向同一个对象
Original object address: 0x10e4a0070
Copied object address: 0x10e4a0070
Original: Hello, World!
ECopied: Hello, World!
Emette il contenuto della stringa.Original pointer address: %p
Puntatore di uscitaoriginalString
L'indirizzo stesso nello stack.Copied pointer address: %p
Puntatore di uscitacopiedString
L'indirizzo stesso nello stack.Original object address: %p
produzioneoriginalString
L'indirizzo nell'heap dell'oggetto stringa a cui puntava.Copied object address: %p
produzionecopiedString
L'indirizzo nell'heap dell'oggetto stringa a cui puntava.Si può vedere che a causa di NSString
è un oggetto immutabile ed viene eseguitocopy
Il metodo non crea un nuovo oggetto, ma restituisce lo stesso oggetto.COSÌoriginalString
EcopiedString
Puntano allo stesso indirizzo di memoria (l'indirizzo dell'oggetto è lo stesso), ma i loro puntatori stessi hanno indirizzi diversi nello stack.
NSString *originalString = @"Hello, World!";
NSString *copiedString = [originalString mutableCopy];
// 打印字符串内容
NSLog(@"Original: %@", originalString); // 输出: Hello, World!
NSLog(@"Copied: %@", copiedString); // 输出: Hello, World!
// 打印指针本身的地址
NSLog(@"Original pointer address: %p", &originalString);
NSLog(@"Copied pointer address: %p", &copiedString);
// 打印指针指向对象的地址
NSLog(@"Original object address: %p", originalString);
NSLog(@"Copied object address: %p", copiedString);
I risultati di esecuzione di Xcode versione 15.1 (15C65) e simulatore (iPhone 15) sono i seguenti:
Original: Hello, World!
Copied: Hello, World!
// 不同的指针
Original pointer address: 0x7ff7be102a98
Copied pointer address: 0x7ff7be102a90
// 指向不同的对象
Original object address: 0x101dfd070
Copied object address: 0x600000c80090