प्रौद्योगिकी साझेदारी

copy तथा mutableCopy किञ्चित् भ्रान्तिकं भवति

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

स्ट्रिंग् लिटरेल् इत्यस्य प्रतिलिपिं कुर्वन्तु

सूचकेन सूचितस्य वस्तुनः पतां सूचकस्य एव पतां च मुद्रयितुं भवान् उपयोक्तुं शक्नोति %p सूचकसङ्केतं निर्गन्तुं स्वरूपं वर्णं कुर्वन्तु ।निम्नलिखित कोड दर्शयतिoriginalString तथाcopiedString सूचकसङ्केतः वस्तुं प्रति सूचयति च पता च :

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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Xcode Version 15.1 (15C65) & Simulator (iPhone 15) इत्यस्य चालनपरिणामाः निम्नलिखितरूपेण सन्ति ।

// 打印的内容一样
Original: Hello, World!
Copied: Hello, World!
// 指针本地的地址不一样,说明是不同的指针
Original pointer address: 0x7ff7b1a5fa98
Copied pointer address: 0x7ff7b1a5fa90
// 不同的指针指向同一个对象
Original object address: 0x10e4a0070
Copied object address: 0x10e4a0070
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

व्याख्याति

  • Original: Hello, World! तथाCopied: Hello, World! स्ट्रिंग् सामग्रीं आउटपुट् कुर्वन्तु ।
  • Original pointer address: %p आउटपुट सूचकoriginalString स्तम्भे एव सम्बोधनम्।
  • Copied pointer address: %p आउटपुट सूचकcopiedString स्तम्भे एव सम्बोधनम्।
  • Original object address: %p उत्पादनम्originalString स्ट्रिंग् ऑब्जेक्ट् इत्यस्य राशौ यत् पता आसीत् तत् सूचितम् ।
  • Copied object address: %p उत्पादनम्copiedString स्ट्रिंग् ऑब्जेक्ट् इत्यस्य राशौ यत् पता आसीत् तत् सूचितम् ।

द्रष्टुं शक्यते यत् कारणात् NSString अविकारी वस्तु अस्ति, निष्पादयति चcopy विधिः नूतनं वस्तु न निर्माति, अपितु समानं वस्तु प्रत्यागच्छति ।अतःoriginalString तथाcopiedString एकमेव स्मृतिसङ्केतं दर्शयन्तु (वस्तुसङ्केतः समानं भवति), परन्तु तेषां सूचकानाम् एव स्तम्भे भिन्नाः पत्तनानि सन्ति ।


स्ट्रिंग् लिटरेल् इत्यत्र mutableCopy कुर्वन्तु

    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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Xcode Version 15.1 (15C65) & Simulator (iPhone 15) इत्यस्य चालनपरिणामाः निम्नलिखितरूपेण सन्ति ।

Original: Hello, World!
Copied: Hello, World!
// 不同的指针
Original pointer address: 0x7ff7be102a98
Copied pointer address: 0x7ff7be102a90
// 指向不同的对象
Original object address: 0x101dfd070
Copied object address: 0x600000c80090
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8