Yanıtlar:
Bu geliyor NeXTSTEP'in miras.
Kakao çerçevelerinin orijinal kodu NeXTSTEP kütüphaneleri Vakfı ve AppKit'ten geldi (bu adlar hala Apple'ın Kakao çerçeveleri tarafından kullanılıyor) ve NextStep mühendisleri sembollerini NS ile önek olarak seçti.
Objective-C, C'nin bir uzantısı olduğundan ve C ++ gibi ad alanlarına sahip olmadığından, çarpışmamak için sembollerin benzersiz bir önekle öneki olması gerekir. Bu, özellikle bir çerçevede tanımlanan semboller için önemlidir.
Bir uygulama yazıyorsanız, kodunuzun sadece sembollerinizi kullanması muhtemeldir, bunun için endişelenmenize gerek yoktur. Ancak başkalarının kullanımı için bir çerçeve veya kütüphane yazıyorsanız, sembollerinize benzersiz bir önek eklemelisiniz. CocoaDev, Kakao topluluğundaki birçok geliştiricinin kendi "seçilmiş" öneklerini listelediği bir sayfaya sahiptir . Bu SO tartışmasını da yararlı bulabilirsiniz .
Kime sorduğunuza bağlı olarak N eXT S TEP veya N eXTSTEP / S un.
Sun'ın bir süre OpenStep'e oldukça büyük bir yatırımı vardı. Sun resme girmeden önce vakıftaki çoğu şey, o zamanlar vakıf olarak bilinmese de, N e X T için NX , NX'in önüne geçti ve Sun'a girmeden hemen önce her şey NS olarak yeniden adlandırıldı . S büyük olasılıkla daha sonra Sun için durmak ama güneş genel uzlaşma adım attıktan sonra onların katılımını onurlandırmak için Sun için durdu olmasıydı vermedi.
Aslında bunun için bir referansım vardı ama şu anda bulamıyorum. Yeniden bulduğumda / bulduğumda yayını güncelleyeceğim.
NextStep (= NS) mirasıdır. NeXT, Steve Jobs'un 1985'te Apple'dan ayrıldıktan sonra kurduğu bilgisayar şirketidir ve NextStep, Obj-C dili ve çalışma zamanı ile birlikte işletim sistemi (UNIX tabanlı) idi. Kütüphaneleri ve araçlarıyla birlikte NextStep daha sonra OpenStep olarak değiştirildi (bu aynı zamanda NeXT'in Sun ile birlikte geliştirdiği bir API'nin adıydı) ve daha sonra Kakao oldu.
Bu farklı adlar aslında oldukça kafa karıştırıcıdır (özellikle bazı isimler sadece karakterlerin büyük veya küçük olduğu durumlarda farklılık gösterir.), Bunu bir açıklama için deneyin:
Apple'ın geliştirici belgelerinden:
Tarihsel Not: Karşılaştığınız sınıfların çoğunun neden NS önekine sahip olduğunu merak ediyorsanız, bunun nedeni kakao ve Kakao Dokunuşunun geçmiş tarihi nedeniyle. Kakao, NeXTStep işletim sistemi için uygulamalar oluşturmak için kullanılan çerçeveler olarak hayata başladı. Apple NeXT'yi 1996'da satın aldığında, NeXTStep'in çoğu mevcut sınıf isimleri de dahil olmak üzere OS X'e dahil edildi. Cocoa Touch, Cocoa'nın iOS eşdeğeri olarak tanıtıldı; bazı sınıflar hem Kakao hem de Kakao Dokunma'da mevcuttur, ancak her platforma özgü çok sayıda sınıf da vardır. NS ve UI (iOS'taki Kullanıcı Arabirimi öğeleri için) gibi iki harfli önekler Apple tarafından kullanılmak üzere ayrılmıştır.
Kaynak: Objective-C ile Programlama
Gönderen Cocoa_ (API) Vikipedi :
(vurgu eklendi)
Kakao dersleri kısaltma ile başlar "NS" (için ya ayakta OpenStep'in NeXT-Güneş yaratılması veya OpenStep'in çerçevesinde, orijinal tescilli dönem için NeXTSTEP'in NSString, NSArray vb:)
Foundation Kit veya daha yaygın olarak Foundation , ilk olarak OpenStep'te ortaya çıktı . Mac OS X'te Core Foundation temel alınmıştır. Foundation, dize ve değer işleme, kapsayıcılar ve yineleme, dağıtılmış bilgi işlem, çalıştırma döngüleri ve doğrudan grafik kullanıcı arabirimine bağlı olmayan diğer işlevler sağlayan genel bir nesne yönelimli kitaplıktır. Çerçevedeki tüm sınıflar ve sabitler için kullanılan "NS" öneki , Coco'nun NeXT ve Sun tarafından ortaklaşa geliştirilen OPENSTEP mirasından geliyor .
NeXT NextStep API'sini (NEXTSTEP işletim sisteminin aksine) tanımlarken, NXConstantString'deki gibi NX önekini kullandılar. Sun ile OpenStep spesifikasyonunu yazarken (OPENSTEP işletim sistemi ile karıştırılmamalıdır) NSObject'te olduğu gibi NS önekini kullandılar.
Temel olarak NS N ext S'den geliyor , Apple Next'i satın aldığında Mac OS X olan orijinal işletim sistemi TEP'den .
Başka bir şeyi açıklamak istiyorum ve bu yüzden tam olarak gerekli.
C ++ 'da ad alanları vardır ve neredeyse her şey girer std'ye
Bu yüzden std :: string'iniz var.
Ad alanları kullanılır, böylece bir hata yapmanız daha zordur ve sistem sınıfıyla çakışmadan kendi sınıf dizginizi yazabilirsiniz.
Objective-C, C'nin üst kümesidir, ancak ad alanlarını içermez ve aynı nedenden ötürü tüm sistem sınıflarına NS veya başka bir garip önek eklenir.
Bu şey, tüm DirectX sınıflarının D3D ile ön ekinin nasıl kullanıldığı ve tüm OpenGL sınıflarının gl ile ön ekinin nasıl yapıldığıyla aynıdır .
Bu , kendi sınıflarınızı adlandırmak için NS'yi kullanmamanız gerektiği ve Core Animation veya CG'de NS , CA gördüğünüzde çekirdek grafikleri de bu sistem çerçevesinde yapılan bir çağrı olduğunu anlıyoruz.
Swift bu kuralı değiştirir, çünkü Swift ad boşluğunu destekler ve String gibi çekirdek türlerini NS eşdeğerleriyle eşler.
Kim bilmeli Bill Bumgarner aka @bbum, 2005 yılında CocoaBuilder posta listesine gönderildi :
Sun, NS öneki devreye girdikten sonra resme biraz girdi. NeXTSTEP 3.0'dan NeXTSTEP 4.0'a (OpenStep olarak da bilinir) geçiş sırasında genel API'larda NS öneki ortaya çıktı. 4.0'dan önce, bir dizi sembol NX önekini kullandı, ancak sistem kitaplıkları tarafından sağlanan sınıfların çoğuna önek eklenmedi - List, Hashtable, View, vb.
Herkesin NX ön ekinin (NeXT için) 1993/1994 tarihine kadar kullanıldığını kabul ettiği ve Apple'ın belgelerinin şunları söyledi :
1994 yılının Eylül ayında yayınlanan resmi OpenStep API, API'yı Foundation ve Application Kit arasında ilk bölen ve “NS” önekini ilk kullanan kişi oldu.