SORU
8 ŞUBAT 2012, ÇARŞAMBA


Blok Bildirgesi Sözdizimi Listesi

Objective C blok sözdizimi (ve aslında C sanırım) herkesin bildiği gibi yersiz. Bağımsız değişken olarak geçirerek blok typedefıng daha farklı görünüyor bugün ivan'ın, blok olarak ilan daha farklı bloklar görünüyor.

Hızlı başvuru için el üstünde tutmak olabileceğini bildirimi blok sözdizimi kapsamlı bir listesi var mı?

CEVAP
8 ŞUBAT 2012, ÇARŞAMBA


Blok Bildirgesi Sözdizimi listesi

Boyunca izin verin

  • return_type/etc nesne/ilkel türü. geri dönmek için (genellikle void)
  • blockName yaratıyorsun blok değişken adı olabilir
  • var_type türü/ilkel/etc nesne. bağımsız değişken olarak geçmek için (boş bırakın, herhangi bir parametre için)
  • varName verilen parametre bir değişken adı olabilir

Ve unutmayın istediğiniz kadar çok sayıda parametre oluşturabilirsiniz.

Değişkenler olarak engeller

Belki de en ortak Bildirgeye için.

return_type (^blockName)(var_type) = ^return_type (var_type varName)
{
    // ...
};

Özellikleri olarak engeller

Çok değişken bloklar bildirmek gibi, ancak kurnazca farklı.

@property (copy) return_type (^blockName) (var_type);

Parametre olarak engeller

Bu farklı olduğunu unutmayın "Bağımsız Blok"; bu durumda, blok bir tartışma isteyen bir yöntem ilanı demektir.

- (void)yourMethod:(return_type (^)(var_type))blockName;

Bağımsız olarak engeller

Bu farklı olduğunu unutmayın "Parametreleri gibi Blok"; bu durumda, bir anonim blok blok bir tartışma isteyen bir yöntem arıyorsun. Eğer zaten bir blok bildirilen değişkenin, bağımsız değişken olarak değişken adının geçmesi için yeterlidir.

[someObject doSomethingWithBlock: ^return_type (var_type varName)
{
    //...
}];

Anonim Blok

Bu işlevsel bir anonim blok, ancak değişkenler blok atama sözdizimi sadece değişken isimsiz bir blok ayarlayın.

^return_type (var_type varName)
{
    //...
};

typedef Blok

Bu blokların bildirimi sırasında herhangi bir diğer sınıf adı gibi başvurulan kısa bir ad ayarlamak için izin verir.

typedef return_type (^blockName)(var_type);

Daha sonra standart blok bildirimi sözdizimini, sadece yerine yerine blockName kullanmak için.

Inline Blok

Bu tartışmalı bir blok daha az yararlı bir kullanımı, ama yerini yine de olabilir. Başka bir deyişle, bir blok isimsiz bir blok hemen sonra örnekleme denir.

^return_type (var_type varName)
{
    //...
}(var);

Inline blok kapsamı mahsup için öncelikle yararlıdır, ve kod brace ile sınırlandırılmış basit parçalar eşdeğer kabaca.

{
   //...
}

Özyinelemeli Engeller

Bu, kendisinden bir engelleme, aramalar ve GCD aramalar sırasında kullanılan bir döngü oluşturarak arama yapabilirsiniz. Bu örnekleme yöntemi ARC korumak döngüsü ücretsiz.

__block return_type (^blockName)(var_type) = [^return_type (var_type varName)
{
    if (returnCondition)
    {
        blockName = nil;
        return;
    }

    // ...
} copy];
blockName(varValue);

Blok Dönüyor

Bir yöntemi bir blok dönebilirsiniz

- (return_type(^)(var_type))methodName
{
    // ...
}

bir fonksiyonu olarak, eğer biraz garip.

return_type (^FunctionName())(var_type)
{
    // ...
}

Ekler

Eğer bir şey özledim, lütfen bana yorum olarak bildirin, ve araştırma/onları ekleyeceğim.

Oh, ve Hızlı

blockName = (varName: var_type) -> (return_type)

Neredeyse dili bir özelliği yok gibi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • Megan Parken

    Megan Parken

    19 Temmuz 2009
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007