Blok Bildirgesi Sözdizimi Listesi | Netgez.com
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

  • boniver

    boniver

    17 NİSAN 2006
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011
  • Truc Minh

    Truc Minh

    23 Ocak 2011