minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Para imprimir o endereço do objeto apontado pelo ponteiro e o endereço do próprio ponteiro, você pode usar %p
caractere de formato para gerar o endereço do ponteiro.O código a seguir mostraoriginalString
ecopiedString
O endereço do ponteiro e o endereço que aponta para o objeto:
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);
Os resultados de execução do Xcode versão 15.1 (15C65) e simulador (iPhone 15) são os seguintes:
// 打印的内容一样
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!
Produza o conteúdo da string.Original pointer address: %p
Ponteiro de saídaoriginalString
O próprio endereço na pilha.Copied pointer address: %p
Ponteiro de saídacopiedString
O próprio endereço na pilha.Original object address: %p
saídaoriginalString
O endereço no heap do objeto string apontado.Copied object address: %p
saídacopiedString
O endereço no heap do objeto string apontado.Pode-se perceber que devido NSString
é um objeto imutável e executacopy
O método não cria um novo objeto, mas retorna o mesmo objeto.entãooriginalString
ecopiedString
Apontam para o mesmo endereço de memória (o endereço do objeto é o mesmo), mas seus próprios ponteiros possuem endereços diferentes na pilha.
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);
Os resultados de execução do Xcode versão 15.1 (15C65) e simulador (iPhone 15) são os seguintes:
Original: Hello, World!
Copied: Hello, World!
// 不同的指针
Original pointer address: 0x7ff7be102a98
Copied pointer address: 0x7ff7be102a90
// 指向不同的对象
Original object address: 0x101dfd070
Copied object address: 0x600000c80090