Wie initialisiert man eine CBMutableCharacteristic mit mehrerenCBCharacteristicProperties und Permissions

8

Ich erstelle eine neue CBMutableCharacteristic für die Verwendung in einer Bluetooth App, die ich mache. Ich habe Code von einem Tutorial bekommen, das so aussieht:

_customCharacteristic = [[CBMutableCharacteristic alloc] initWithType:characteristicUUID properties:CBCharacteristicPropertyNotify value:nil permissions:CBAttributePermissionsReadable];

wobei _customCharacteristic meine CBMutableCharacteristic ist.

Ich möchte jedoch mein _customCharacteristic mit anderen Eigenschaften wie CBCharacteristicPropertyRead und CBCharacteristicPropertyWrite initialisieren. Das gleiche gilt für die Berechtigungen: Ich möchte auch CBAttributePermissionsWriteable geben.

Demnach: Ссылка

und dies: Ссылка

Ich kann sowohl mehrere Eigenschaften als auch Berechtigungen für jedes Merkmal haben. Ich weiß jedoch nicht, wie ich meine CBMutableCharacteristic auf diese Weise initialisieren kann.

    
Graham Carling 07.08.2013, 21:26
quelle

2 Antworten

14

Es ist eine Enumeration, deren verschiedene Werte bitweise ODER-verknüpft werden können, so dass Sie die charakteristischen Eigenschaften und Berechtigungen zusammen verwenden können:

%Vor%     
Tommy Devoy 07.08.2013, 22:29
quelle
4

Tdevoy Antwort ist richtig, oder folgende funktioniert auch Code für mich

%Vor%     
V-Xtreme 08.08.2013 04:33
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset Was sind Abstraktionen? ___ qstntxt ___

Ich habe Stroustrups "Die C ++ Programmiersprache" gelesen und erwähnt sehr oft "Abstraktionen":

  

Viele der flexibelsten, effizientesten und nützlichsten Abstraktionen beinhalten die Parametrisierung von Typen (Klassen) und Algorithmen (Funktionen) mit anderen Typen und Algorithmen

und

  

C ++ ist eine Sprache für die Entwicklung und Verwendung eleganter und effizienter Abstraktionen.

Hängt das in irgendeiner Weise mit abstrakten Klassen in C ++ zusammen? Oder mit Polymorphie, Vererbung oder Templates?

Könnte jemand bitte ein Beispiel geben?

    
___ answer18142662 ___

In der generischen Programmierung haben Abstraktionen eine genaue Bedeutung und werden "Konzepte" genannt. Ein Konzept ist wie folgt definiert :

Ein Konzept besteht aus einer Reihe von Anforderungen, die aus gültigen Ausdrücken, zugehörigen Typen, Invarianten und Komplexitätsgarantien bestehen. Ein Typ, der die Anforderungen erfüllt, soll das Konzept modellieren. Ein Konzept kann die Anforderungen eines anderen Konzepts erweitern, das als Verfeinerung bezeichnet wird.

  • Gültige Ausdrücke sind C ++ - Ausdrücke, die erfolgreich kompiliert werden müssen, damit die an dem Ausdruck beteiligten Objekte als Modelle des Konzepts betrachtet werden können.
  • Zugehörige Typen sind Typen, die mit dem Modellierungstyp verknüpft sind, da sie an einem oder mehreren gültigen Ausdrücken teilnehmen. Auf normalerweise zugeordnete Typen kann entweder über typedefs zugegriffen werden, die in einer Klassendefinition für den Modellierungstyp verschachtelt sind, oder auf sie wird über eine Merkmalsklasse zugegriffen.
  • Invarianten sind Laufzeiteigenschaften der Objekte, die immer "true" sein müssen, dh die Funktionen, an denen die Objekte beteiligt sind, müssen diese Eigenschaften beibehalten. Die Invarianten haben oft die Form von Vorbedingungen und Nachbedingungen.
  • Komplexitätsgarantien sind maximale Grenzen für die Dauer der Ausführung eines gültigen Ausdrucks oder für die Verwendung verschiedener Ressourcen. Die in der C ++ - Standardbibliothek verwendeten Konzepte sind auf der SGI STL-Site dokumentiert .

Die Implementierung eines Konzepts in echten Code kann auf verschiedene Arten erfolgen. Der klassische OOP-Ansatz besteht darin, eine abstrakte Basisklasse zu schreiben, die die gültigen Ausdrücke und zugehörigen Typen bereitstellt. Die konkret abgeleiteten Klassen liefern dann die Invarianten und die Komplexitätsgarantien. Bei Vorlagen sind die gültigen Ausdrücke impliziter und werden erst nach der Instanziierung überprüft. Template-Implementierungskonzepte sind eine Form von Enttippung : wenn es aussieht wie eine Ente, Quacksalber wie eine Ente, ....

Der C ++ 0x-Entwicklungsprozess hat sich sehr viel Mühe gegeben Konzepte direkt in Code umsetzbar machen, aber nicht in C ++ integriert 11 Standard . Allerdings ein Konzepte Lite Version wird wahrscheinlich in den nächsten C ++ 14 Standard erscheinen.

    
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ answer18141913 ___
  

Abstraktion ( n ) - die Qualität des Umgangs mit Ideen anstelle von Ereignissen

     

- Quelle: Oxford English Dictionary

Stroustrup bezieht sich nicht auf abstrakte Klassen oder andere spezifische Ideen in der Programmierung. Vielmehr bezieht er sich auf das Wort Abstraktion selbst.

Abstraktionen sind mentale Helfer. Sie helfen uns, eher in "Theorie" als in direkter Anwendung zu denken. Mathematik ist die Kunst der Abstraktion. Programmieren ist die Kunst der angewandten Abstraktionen.

Abstraktionen helfen uns, mentale Modelle wie Hierarchien zu bilden, die uns helfen, über Dinge nachzudenken. Polymorphismus ist aufgrund von Abstraktionen möglich. Schauen wir uns ein Beispiel an.

Beispiel

Ich habe einen Oleksiy Dobrodum. Ich bezeichne es als Oleksiy Dobrodum, ich behandle es wie ein Oleksiy Dobrodum, alles was es jemals geben wird, ist ein Oleksiy Dobrodum. Alles, was ich mit diesem Oleksiy Dobrodum mache, ist speziell dafür. Wir sind jetzt auf der ersten Abstraktionsebene oder am spezifischsten, wenn wir mit diesem Oleksiy Dobrodum arbeiten.

Kürzlich habe ich eine Zach Latta erworben, also habe ich jetzt einen Oleksiy Dobrodum und einen Zach Latta.

Ich könnte sie sowohl einzeln als auch als Oleksiy Dobrodum und als Zach Latta bezeichnen, aber das würde schnell überflüssig werden und sich als nicht flexibel erweisen. Stattdessen können wir einfach Oleksiy Dobrodum und Zach Latta zusammenfassen und sie Menschen nennen. Wir haben jetzt Abstraktionslevel 2 erreicht. Anstatt mit jeder Person einzeln umzugehen, können wir sie als Menschen bezeichnen. Auf diese Weise haben wir die "Implementierung" oder die spezifischen Details jeder Person abstrahiert und haben begonnen, uns auf die Ideen zu konzentrieren, daher denken wir jetzt abstrakt.

Natürlich können wir das weiter abstrahieren, aber hoffentlich fangen Sie an, die Idee hinter Abstraktionen zu verstehen. Der Schlüssel dazu ist, dass eine Abstraktion die Details (oder die Implementierung) versteckt . Indem wir die Details in unserer menschlichen Abstraktion verbergen, erlauben wir uns, in Allgemeinheiten zu sprechen. Wir werden kurz darüber sprechen, wie dies beim Programmieren im nächsten Abschnitt zutrifft.

Anwenden von Abstraktionen

Nachdem wir nun kurz angesprochen haben, was eine Abstraktion ist, wenden wir sie an. Polymorphismus ist aufgrund von Abstraktionen möglich. Befolgen Sie das Modell des vorherigen Beispiels, sagen wir, dass wir die folgenden zwei Klassen haben:

%Vor%

Wenn ich mit einer Instanz von %code% interagieren möchte, muss ich mich speziell auf sie beziehen. Dasselbe gilt für %code% Instanzen.

%Vor%

Wenn ich eine abstrakte Klasse namens %code% erstelle und beide %code% und %code% davon erben, kann ich die Implementierung beider Klassen abstrahieren und einfach auf beide Instanzen verweisen von ihnen als %code% .

%Vor%

Unser Klassendiagramm sieht jetzt wie folgt aus:

Ich könnte über die Implementierung für immer streiten, aber lassen Sie uns zu unseren wichtigsten Imbissbuden gehen.

Key Takeaways

  • Abstraktionen sind Ideen, keine spezifischen Ereignisse
  • etwas abstrahieren bedeutet, sich von seiner Umsetzung zu entfernen und über große Ideen nachzudenken
  • Abstraktionen können verwendet werden, um Code (und viele andere Dinge) effektiv zu organisieren
  • Objektorientierte Programmierung hängt vollständig von den Abstraktionen ab. Siehe den obigen Aufzählungspunkt.
___ tag123abstraction ___ Abstraktion ist ein Informatikkonzept, bei dem eine Implementierung von ihrer Schnittstelle getrennt ist. ___ answer18142101 ___

Ja, es hängt mit den abstrakten Klassen in C ++ zusammen, und es ist nicht auf diesen Kontext beschränkt, er erklärte generisch, dass C ++ die Abstraktion vollständig unterstützt.

Beispiel: In C ++ können wir die Klassentypen oder Funktionsaufrufe in anderen Typen verwenden. Zum Beispiel kann ein Funktionsaufruf einen Klassentyp / eine Funktion als Parameter haben, sowohl die Funktion als auch a class verweist auf eine Form abstraction- (hier bezieht sich Abstraktion auf das Ausblenden der Definition der Funktion oder einer Klasse vom Benutzer)

    
___